@chidchanun/bcp 0.1.27 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,7 @@ export type CliCommand =
8
8
  | "routes"
9
9
  | "update"
10
10
  | "db"
11
+ | "generate"
11
12
  | "doctor"
12
13
  | "inspect"
13
14
  | "help"
@@ -20,6 +21,13 @@ export type DatabaseCliAction =
20
21
  | "create"
21
22
  | "help";
22
23
 
24
+ export type GenerateCliKind =
25
+ | "page"
26
+ | "api"
27
+ | "middleware"
28
+ | "migration"
29
+ | "help";
30
+
23
31
  export interface CliOptions {
24
32
  command: CliCommand;
25
33
 
@@ -37,9 +45,15 @@ export interface CliOptions {
37
45
 
38
46
  json?: boolean;
39
47
 
48
+ force?: boolean;
49
+
40
50
  dbAction?: DatabaseCliAction;
41
51
 
42
52
  dbMigrationName?: string;
53
+
54
+ generateKind?: GenerateCliKind;
55
+
56
+ generateName?: string;
43
57
  }
44
58
 
45
59
  export function parseCliArgs(
@@ -68,12 +82,21 @@ export function parseCliArgs(
68
82
  let json =
69
83
  false;
70
84
 
85
+ let force =
86
+ false;
87
+
71
88
  let dbAction:
72
89
  DatabaseCliAction | undefined;
73
90
 
74
91
  let dbMigrationName:
75
92
  string | undefined;
76
93
 
94
+ let generateKind:
95
+ GenerateCliKind | undefined;
96
+
97
+ let generateName:
98
+ string | undefined;
99
+
77
100
  let commandSet = false;
78
101
 
79
102
  for (
@@ -92,6 +115,11 @@ export function parseCliArgs(
92
115
  command === "db"
93
116
  ) {
94
117
  dbAction = "help";
118
+ } else if (
119
+ commandSet &&
120
+ command === "generate"
121
+ ) {
122
+ generateKind = "help";
95
123
  } else {
96
124
  command = "help";
97
125
  }
@@ -224,6 +252,14 @@ export function parseCliArgs(
224
252
  continue;
225
253
  }
226
254
 
255
+ if (
256
+ argument === "--force"
257
+ ) {
258
+ force =
259
+ true;
260
+ continue;
261
+ }
262
+
227
263
  if (
228
264
  argument.startsWith("-")
229
265
  ) {
@@ -299,6 +335,45 @@ export function parseCliArgs(
299
335
  );
300
336
  }
301
337
 
338
+ if (
339
+ commandSet &&
340
+ command === "generate"
341
+ ) {
342
+ if (
343
+ generateKind === undefined
344
+ ) {
345
+ if (
346
+ argument === "page" ||
347
+ argument === "api" ||
348
+ argument === "middleware" ||
349
+ argument === "migration" ||
350
+ argument === "help"
351
+ ) {
352
+ generateKind =
353
+ argument;
354
+ continue;
355
+ }
356
+
357
+ throw new Error(
358
+ `Unknown generator: ${argument}`
359
+ );
360
+ }
361
+
362
+ if (
363
+ generateKind !== "middleware" &&
364
+ generateKind !== "help" &&
365
+ generateName === undefined
366
+ ) {
367
+ generateName =
368
+ argument;
369
+ continue;
370
+ }
371
+
372
+ throw new Error(
373
+ `Unexpected argument: ${argument}`
374
+ );
375
+ }
376
+
302
377
  if (commandSet) {
303
378
  throw new Error(
304
379
  `Unexpected argument: ${argument}`
@@ -312,6 +387,7 @@ export function parseCliArgs(
312
387
  argument === "routes" ||
313
388
  argument === "update" ||
314
389
  argument === "db" ||
390
+ argument === "generate" ||
315
391
  argument === "doctor" ||
316
392
  argument === "inspect" ||
317
393
  argument === "help" ||
@@ -349,6 +425,15 @@ export function parseCliArgs(
349
425
  );
350
426
  }
351
427
 
428
+ if (
429
+ force &&
430
+ command !== "generate"
431
+ ) {
432
+ throw new Error(
433
+ "Option --force is only valid with `bcp generate`."
434
+ );
435
+ }
436
+
352
437
  return {
353
438
  command,
354
439
  rootDirectory,
@@ -362,12 +447,23 @@ export function parseCliArgs(
362
447
  json: true,
363
448
  }
364
449
  : {}),
450
+ ...(force
451
+ ? {
452
+ force: true,
453
+ }
454
+ : {}),
365
455
  ...(command === "db"
366
456
  ? {
367
457
  dbAction,
368
458
  dbMigrationName,
369
459
  }
370
460
  : {}),
461
+ ...(command === "generate"
462
+ ? {
463
+ generateKind,
464
+ generateName,
465
+ }
466
+ : {}),
371
467
  };
372
468
  }
373
469