Skip to content

Commit fbb08ad

Browse files
committed
refactoring(cli): extract and generalizing validations
1 parent e88fcaa commit fbb08ad

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
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: 5 additions & 10 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,12 +108,6 @@ const getInstallCommand = (runtime) => {
107108
return undefined;
108109
};
109110

110-
const deployValidate = (singular, items) => {
111-
if (items.length <= 0) {
112-
return `Please select at least one ${singular}`;
113-
}
114-
return true;
115-
}
116111

117112
const questionsInitProject = [
118113
{
@@ -288,7 +283,7 @@ const questionsDeployFunctions = [
288283
type: "checkbox",
289284
name: "functions",
290285
message: "Which functions would you like to deploy?",
291-
validate: (i) => deployValidate('function', i),
286+
validate: (value) => validateRequired('function', value),
292287
choices: () => {
293288
let functions = localConfig.getFunctions();
294289
if (functions.length === 0) {
@@ -315,7 +310,7 @@ const questionsDeployCollections = [
315310
type: "checkbox",
316311
name: "collections",
317312
message: "Which collections would you like to deploy?",
318-
validate: (i) => deployValidate('collection', i),
313+
validate: (value) => validateRequired('collection', value),
319314
choices: () => {
320315
let collections = localConfig.getCollections();
321316
if (collections.length === 0) {
@@ -341,7 +336,7 @@ const questionsDeployBuckets = [
341336
type: "checkbox",
342337
name: "buckets",
343338
message: "Which buckets would you like to deploy?",
344-
validate: (i) => deployValidate('bucket', i),
339+
validate: (value) => validateRequired('bucket', value),
345340
choices: () => {
346341
let buckets = localConfig.getBuckets();
347342
if (buckets.length === 0) {
@@ -382,7 +377,7 @@ const questionsDeployTeams = [
382377
type: "checkbox",
383378
name: "teams",
384379
message: "Which teams would you like to deploy?",
385-
validate: (i) => deployValidate('team', i),
380+
validate: (value) => validateRequired('team', value),
386381
choices: () => {
387382
let teams = localConfig.getTeams();
388383
if (teams.length === 0) {

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)