Skip to content

Commit 23a3623

Browse files
authored
Merge pull request #835 from appwrite/feat-selection-required
Deployment selection is required
2 parents 36a37b8 + fbb08ad commit 23a3623

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

src/SDK/Language/CLI.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ public function getFiles(): array
127127
'destination' => 'lib/questions.js',
128128
'template' => 'cli/lib/questions.js.twig',
129129
],
130+
[
131+
'scope' => 'default',
132+
'destination' => 'lib/validations.js',
133+
'template' => 'cli/lib/validations.js.twig',
134+
],
130135
[
131136
'scope' => 'default',
132137
'destination' => 'lib/parser.js',

templates/cli/lib/questions.js.twig

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const { projectsList } = require('./commands/projects');
33
const { functionsListRuntimes } = require('./commands/functions');
44
const { accountListMfaFactors } = require("./commands/account");
55
const { sdkForConsole } = require("./sdks");
6+
const { validateRequired } = require("./validations");
67

78
const { databasesList } = require('./commands/databases');
89
const JSONbig = require("json-bigint")({ storeAsString: false });
@@ -107,6 +108,7 @@ const getInstallCommand = (runtime) => {
107108
return undefined;
108109
};
109110

111+
110112
const questionsInitProject = [
111113
{
112114
type: "confirm",
@@ -209,12 +211,12 @@ const questionsInitFunction = [
209211
parseOutput: false
210212
})
211213
let runtimes = response["runtimes"]
212-
let choices = runtimes.map((runtime, idx) => {
214+
let choices = runtimes.map((runtime, idx) => {
213215
return {
214216
name: `${runtime.name} (${runtime['$id']})`,
215-
value: {
216-
id: runtime['$id'],
217-
entrypoint: getEntrypoint(runtime['$id']),
217+
value: {
218+
id: runtime['$id'],
219+
entrypoint: getEntrypoint(runtime['$id']),
218220
ignore: getIgnores(runtime['$id']),
219221
commands : getInstallCommand(runtime['$id'])
220222
},
@@ -281,6 +283,7 @@ const questionsDeployFunctions = [
281283
type: "checkbox",
282284
name: "functions",
283285
message: "Which functions would you like to deploy?",
286+
validate: (value) => validateRequired('function', value),
284287
choices: () => {
285288
let functions = localConfig.getFunctions();
286289
if (functions.length === 0) {
@@ -307,6 +310,7 @@ const questionsDeployCollections = [
307310
type: "checkbox",
308311
name: "collections",
309312
message: "Which collections would you like to deploy?",
313+
validate: (value) => validateRequired('collection', value),
310314
choices: () => {
311315
let collections = localConfig.getCollections();
312316
if (collections.length === 0) {
@@ -332,6 +336,7 @@ const questionsDeployBuckets = [
332336
type: "checkbox",
333337
name: "buckets",
334338
message: "Which buckets would you like to deploy?",
339+
validate: (value) => validateRequired('bucket', value),
335340
choices: () => {
336341
let buckets = localConfig.getBuckets();
337342
if (buckets.length === 0) {
@@ -372,6 +377,7 @@ const questionsDeployTeams = [
372377
type: "checkbox",
373378
name: "teams",
374379
message: "Which teams would you like to deploy?",
380+
validate: (value) => validateRequired('team', value),
375381
choices: () => {
376382
let teams = localConfig.getTeams();
377383
if (teams.length === 0) {
@@ -403,7 +409,7 @@ const questionsListFactors = [
403409
sdk: client,
404410
parseOutput: false
405411
});
406-
412+
407413
const choices = [
408414
{
409415
name: `TOTP (Time-based One-time Password)`,

templates/cli/lib/validations.js.twig

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const validateRequired = (resource, value) => {
2+
if (Array.isArray(value)) {
3+
if (value.length <= 0) {
4+
return `Please select at least one ${resource}`;
5+
}
6+
} else {
7+
if (value === undefined || value === null || value === 0 || (typeof value === "string" && value.trim() === '')) {
8+
return `${resource} is required`;
9+
}
10+
}
11+
12+
return true;
13+
}
14+
15+
module.exports = {
16+
validateRequired
17+
}

0 commit comments

Comments
 (0)