Skip to content

Commit cce2c3a

Browse files
committed
refactor(cli): Moving --force logic into questions
1 parent c82609d commit cce2c3a

File tree

2 files changed

+105
-47
lines changed

2 files changed

+105
-47
lines changed

templates/cli/lib/commands/push.js.twig

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ const pushResources = async () => {
265265
}
266266
}
267267
}
268+
269+
process.exit(0);
268270
};
269271

270272
const pushFunction = async ({ async } = {}) => {
@@ -297,8 +299,6 @@ const pushFunction = async ({ async } = {}) => {
297299
}
298300

299301
if (func.variables) {
300-
func.pushVariables = cliConfig.force;
301-
302302
try {
303303
const { total } = await functionsListVariables({
304304
functionId: func['$id'],
@@ -310,8 +310,8 @@ const pushFunction = async ({ async } = {}) => {
310310
func.pushVariables = true;
311311
} else if (total > 0 && !func.pushVariables) {
312312
log(`The function ${func.name} has remote variables setup`);
313-
const variableAnswers = await inquirer.prompt(questionsPushFunctions[1])
314-
func.pushVariables = variableAnswers.override.toLowerCase() === "yes";
313+
const variableAnswers = await inquirer.prompt(questionsPushFunctions.slice(2, 4));
314+
func.pushVariables = variableAnswers.setupoverride ? variableAnswers.setupoverride : variableAnswers.override.toLowerCase() === "yes";
315315
}
316316
} catch (e) {
317317
if (e.code != 404) {
@@ -524,6 +524,8 @@ const pushFunction = async ({ async } = {}) => {
524524
})
525525

526526
success(`Pushed ${successfullyPushed} functions with ${successfullyDeployed} successful deployments.`);
527+
528+
process.exit(0);
527529
}
528530

529531
const createAttribute = async (databaseId, collectionId, attribute) => {
@@ -641,6 +643,8 @@ const createAttribute = async (databaseId, collectionId, attribute) => {
641643
parseOutput: false
642644
})
643645
}
646+
647+
process.exit(0);
644648
}
645649

646650
const pushCollection = async () => {
@@ -707,12 +711,11 @@ const pushCollection = async () => {
707711

708712
log(`Collection ${collection.name} ( ${collection['$id']} ) already exists.`);
709713

710-
if (!cliConfig.force) {
711-
const answers = await inquirer.prompt(questionsPushCollections[2])
712-
if (answers.override.toLowerCase() !== "yes") {
713-
log(`Received "${answers.override}". Skipping ${collection.name} ( ${collection['$id']} )`);
714-
continue;
715-
}
714+
const answers = await inquirer.prompt(questionsPushCollections.slice(2, 4))
715+
const override = answers.setupoverride ? answers.setupoverride : answers.override.toLowerCase() === "yes";
716+
if (!override) {
717+
log(`Skipping ${collection.name} ( ${collection['$id']} )`);
718+
continue;
716719
}
717720

718721
log(`Deleting indexes and attributes ... `);
@@ -859,6 +862,8 @@ const pushCollection = async () => {
859862

860863
success(`Created ${relationships.length} relationship attributes`);
861864
}
865+
866+
process.exit(0);
862867
}
863868

864869
const pushBucket = async () => {
@@ -884,12 +889,11 @@ const pushBucket = async () => {
884889
})
885890
log(`Bucket ${bucket.name} ( ${bucket['$id']} ) already exists.`);
886891

887-
if (!cliConfig.force) {
888-
const answers = await inquirer.prompt(questionsPushBuckets[2])
889-
if (answers.override.toLowerCase() !== "yes") {
890-
log(`Received "${answers.override}". Skipping ${bucket.name} ( ${bucket['$id']} )`);
891-
continue;
892-
}
892+
const answers = await inquirer.prompt(questionsPushBuckets.slice(2, 4))
893+
const override = answers.setupoverride ? answers.setupoverride : answers.override.toLowerCase() === "yes";
894+
if (!override) {
895+
log(`Skipping ${bucket.name} ( ${bucket['$id']} )`);
896+
continue;
893897
}
894898

895899
log(`Updating bucket ...`)
@@ -934,6 +938,8 @@ const pushBucket = async () => {
934938
}
935939
}
936940
}
941+
942+
process.exit(0);
937943
}
938944

939945
const pushTeam = async () => {
@@ -959,12 +965,11 @@ const pushTeam = async () => {
959965
})
960966
log(`Team ${team.name} ( ${team['$id']} ) already exists.`);
961967

962-
if (!cliConfig.force) {
963-
const answers = await inquirer.prompt(questionsPushTeams[2])
964-
if (answers.override.toLowerCase() !== "yes") {
965-
log(`Received "${answers.override}". Skipping ${team.name} ( ${team['$id']} )`);
966-
continue;
967-
}
968+
const answers = await inquirer.prompt(questionsPushTeams.slice(2, 4))
969+
const override = answers.setupoverride ? answers.setupoverride : answers.override.toLowerCase() === "yes";
970+
if (!override) {
971+
log(`Skipping ${team.name} ( ${team['$id']} )`);
972+
continue;
968973
}
969974

970975
log(`Updating team ...`)
@@ -992,27 +997,28 @@ const pushTeam = async () => {
992997
}
993998
}
994999
}
1000+
1001+
process.exit(0);
9951002
}
9961003

9971004
const pushMessagingTopic = async () => {
9981005
let response = {};
9991006

10001007
const configTopics = localConfig.getMessagingTopics();
10011008
const topicsIds = (await inquirer.prompt(questionsPushMessagingTopics.slice(0, 2))).topics;
1002-
let overrideExisting = cliConfig.force;
10031009
const topics = [];
1010+
let overrideExisting = false;
10041011

10051012
for (const topicId of topicsIds) {
10061013
const id = topicId.value ? topicId.value : topicId
10071014
const idTopic = configTopics.filter((b) => b.$id === id);
10081015
topics.push(...idTopic);
10091016
}
10101017

1011-
if (!cliConfig.force) {
1012-
const answers = await inquirer.prompt(questionsPushMessagingTopics[2])
1013-
if (answers.override.toLowerCase() === "yes") {
1014-
overrideExisting = true;
1015-
}
1018+
const answers = await inquirer.prompt(questionsPushMessagingTopics.slice(2, 4))
1019+
const override = answers.setupoverride ? answers.setupoverride : answers.override.toLowerCase() === "yes";
1020+
if (override) {
1021+
overrideExisting = true
10161022
}
10171023

10181024
for (let topic of topics) {
@@ -1057,6 +1063,8 @@ const pushMessagingTopic = async () => {
10571063
}
10581064
}
10591065
}
1066+
1067+
process.exit(0);
10601068
}
10611069

10621070
const push = new Command("push")

templates/cli/lib/questions.js.twig

Lines changed: 69 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,6 @@ const questionsPullCollection = [
277277
value: database.$id
278278
}
279279
});
280-
281280
return false;
282281
}
283282
},
@@ -399,9 +398,19 @@ const questionsPushFunctions = [
399398
return answers.setup;
400399
}
401400
},
401+
{
402+
type: "input",
403+
name: "setupoverride",
404+
when: (answers) => {
405+
answers.setupoverride = cliConfig.force;
406+
407+
return false;
408+
}
409+
},
402410
{
403411
type: "input",
404412
name: "override",
413+
when: () => !cliConfig.force,
405414
message: 'Are you sure you want to override this function\'s variables? This can lead to loss of secrets! Type "YES" to confirm.'
406415
},
407416
]
@@ -447,11 +456,21 @@ const questionsPushCollections = [
447456
return answers.setup;
448457
}
449458
},
459+
{
460+
type: "input",
461+
name: "setupoverride",
462+
when: (answers) => {
463+
answers.setupoverride = cliConfig.force;
464+
465+
return false;
466+
}
467+
},
450468
{
451469
type: "input",
452470
name: "override",
471+
when: () => !cliConfig.force,
453472
message: 'Are you sure you want to override this collection? This can lead to loss of data! Type "YES" to confirm.'
454-
},
473+
}
455474
]
456475

457476
const questionsPushBuckets = [
@@ -495,11 +514,21 @@ const questionsPushBuckets = [
495514
return answers.setup;
496515
}
497516
},
517+
{
518+
type: "input",
519+
name: "setupoverride",
520+
when: (answers) => {
521+
answers.setupoverride = cliConfig.force;
522+
523+
return false;
524+
}
525+
},
498526
{
499527
type: "input",
500528
name: "override",
529+
when: () => !cliConfig.force,
501530
message: 'Are you sure you want to override this bucket? This can lead to loss of data! Type "YES" to confirm.'
502-
},
531+
}
503532
]
504533

505534
const questionsPushMessagingTopics = [
@@ -544,24 +573,19 @@ const questionsPushMessagingTopics = [
544573
},
545574
{
546575
type: "input",
547-
name: "override",
548-
message: 'Would you like to override existing topics? This can lead to loss of data! Type "YES" to confirm.'
549-
}
550-
]
576+
name: "setupoverride",
577+
when: (answers) => {
578+
answers.setupoverride = cliConfig.force;
551579

552-
const questionsGetEntrypoint = [
553-
{
554-
type: "input",
555-
name: "entrypoint",
556-
message: "Enter the entrypoint",
557-
default: null,
558-
validate(value) {
559-
if (!value) {
560-
return "Please enter your entrypoint";
561-
}
562-
return true;
580+
return false;
563581
}
564582
},
583+
{
584+
type: "input",
585+
name: "override",
586+
when: () => !cliConfig.force,
587+
message: 'Would you like to override existing topics? This can lead to loss of data! Type "YES" to confirm.'
588+
}
565589
]
566590

567591
const questionsPushTeams = [
@@ -585,6 +609,7 @@ const questionsPushTeams = [
585609
answers.setup = answers.setup.filter((team) => cliConfig.ids.includes(team.value));
586610
}
587611

612+
588613
return false;
589614
}
590615
},
@@ -605,13 +630,38 @@ const questionsPushTeams = [
605630
return answers.setup;
606631
}
607632
},
633+
{
634+
type: "input",
635+
name: "setupoverride",
636+
when: (answers) => {
637+
answers.setupoverride = cliConfig.force;
638+
639+
return false;
640+
}
641+
},
608642
{
609643
type: "input",
610644
name: "override",
645+
when: () => !cliConfig.force,
611646
message: 'Are you sure you want to override this team? This can lead to loss of data! Type "YES" to confirm.'
612-
},
647+
}
613648
];
614649

650+
const questionsGetEntrypoint = [
651+
{
652+
type: "input",
653+
name: "entrypoint",
654+
message: "Enter the entrypoint",
655+
default: null,
656+
validate(value) {
657+
if (!value) {
658+
return "Please enter your entrypoint";
659+
}
660+
return true;
661+
}
662+
},
663+
]
664+
615665
const questionsListFactors = [
616666
{
617667
type: "list",

0 commit comments

Comments
 (0)