@detergent-software/atk 8.9.0-dev.17 → 8.9.0-dev.18

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/cli.js +7 -3
  3. package/build/cli.js.map +1 -1
  4. package/build/command-manifest.json +1507 -0
  5. package/build/commands/cache.d.ts +1 -1
  6. package/build/commands/publish.d.ts +1 -1
  7. package/build/commands/schema.d.ts +3 -3
  8. package/build/components/Header.d.ts +2 -3
  9. package/build/components/Header.d.ts.map +1 -1
  10. package/build/components/Header.js +2 -9
  11. package/build/components/Header.js.map +1 -1
  12. package/build/components/header-art.d.ts +7 -0
  13. package/build/components/header-art.d.ts.map +1 -0
  14. package/build/components/header-art.js +14 -0
  15. package/build/components/header-art.js.map +1 -0
  16. package/build/lib/pastel/commander-specs.d.ts +7 -0
  17. package/build/lib/pastel/commander-specs.d.ts.map +1 -0
  18. package/build/lib/pastel/commander-specs.js +50 -0
  19. package/build/lib/pastel/commander-specs.js.map +1 -0
  20. package/build/lib/pastel/generate-arguments.d.ts +3 -3
  21. package/build/lib/pastel/generate-arguments.d.ts.map +1 -1
  22. package/build/lib/pastel/generate-arguments.js +25 -22
  23. package/build/lib/pastel/generate-arguments.js.map +1 -1
  24. package/build/lib/pastel/generate-command.d.ts +7 -5
  25. package/build/lib/pastel/generate-command.d.ts.map +1 -1
  26. package/build/lib/pastel/generate-command.js +32 -62
  27. package/build/lib/pastel/generate-command.js.map +1 -1
  28. package/build/lib/pastel/generate-commands.d.ts +3 -5
  29. package/build/lib/pastel/generate-commands.d.ts.map +1 -1
  30. package/build/lib/pastel/generate-commands.js +6 -10
  31. package/build/lib/pastel/generate-commands.js.map +1 -1
  32. package/build/lib/pastel/generate-options.d.ts +3 -3
  33. package/build/lib/pastel/generate-options.d.ts.map +1 -1
  34. package/build/lib/pastel/generate-options.js +16 -13
  35. package/build/lib/pastel/generate-options.js.map +1 -1
  36. package/build/lib/pastel/index.d.ts +7 -0
  37. package/build/lib/pastel/index.d.ts.map +1 -1
  38. package/build/lib/pastel/index.js +16 -15
  39. package/build/lib/pastel/index.js.map +1 -1
  40. package/build/lib/pastel/internal-types.d.ts +39 -8
  41. package/build/lib/pastel/internal-types.d.ts.map +1 -1
  42. package/build/lib/pastel/manifest.d.ts +8 -0
  43. package/build/lib/pastel/manifest.d.ts.map +1 -0
  44. package/build/lib/pastel/manifest.js +7 -0
  45. package/build/lib/pastel/manifest.js.map +1 -0
  46. package/build/lib/pastel/read-commands.d.ts +7 -2
  47. package/build/lib/pastel/read-commands.d.ts.map +1 -1
  48. package/build/lib/pastel/read-commands.js +51 -30
  49. package/build/lib/pastel/read-commands.js.map +1 -1
  50. package/build/lib/pastel/render-command.d.ts +13 -0
  51. package/build/lib/pastel/render-command.d.ts.map +1 -0
  52. package/build/lib/pastel/render-command.js +56 -0
  53. package/build/lib/pastel/render-command.js.map +1 -0
  54. package/package.json +5 -4
@@ -5,8 +5,8 @@ export declare const options: z.ZodObject<{
5
5
  }, z.core.$strip>;
6
6
  export declare const args: z.ZodTuple<[z.ZodOptional<z.ZodEnum<{
7
7
  clear: "clear";
8
- status: "status";
9
8
  clean: "clean";
9
+ status: "status";
10
10
  }>>], null>;
11
11
  type Props = {
12
12
  args: z.infer<typeof args>;
@@ -3,8 +3,8 @@ export declare const description = "Publish one or more assets, or a bundle, to
3
3
  export declare const options: z.ZodObject<{
4
4
  bump: z.ZodOptional<z.ZodEnum<{
5
5
  patch: "patch";
6
- major: "major";
7
6
  minor: "minor";
7
+ major: "major";
8
8
  }>>;
9
9
  description: z.ZodOptional<z.ZodString>;
10
10
  dryRun: z.ZodDefault<z.ZodBoolean>;
@@ -10,11 +10,11 @@ export declare const args: z.ZodTuple<[z.ZodEnum<{
10
10
  hook: "hook";
11
11
  "memory-template": "memory-template";
12
12
  "mcp-config": "mcp-config";
13
+ config: "config";
13
14
  bundle: "bundle";
14
- registry: "registry";
15
- lockfile: "lockfile";
16
15
  adapter: "adapter";
17
- config: "config";
16
+ lockfile: "lockfile";
17
+ registry: "registry";
18
18
  }>], null>;
19
19
  type Props = {
20
20
  args: z.infer<typeof args>;
@@ -1,13 +1,12 @@
1
+ import { ASCII_ART, GRADIENT } from './header-art.js';
1
2
  interface HeaderProps {
2
3
  /** Version string to display (e.g., "0.1.0") */
3
4
  version?: string;
4
5
  }
5
- export declare const ASCII_ART: string[];
6
- export declare const GRADIENT: string[];
6
+ export { ASCII_ART, GRADIENT };
7
7
  /**
8
8
  * Styled app banner with ASCII art and optional version number.
9
9
  * Used by the _app.tsx wrapper for consistent branding.
10
10
  */
11
11
  export default function Header({ version }: HeaderProps): import("react/jsx-runtime").JSX.Element;
12
- export {};
13
12
  //# sourceMappingURL=Header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,SAAS,UAOrB,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAqE,CAAC;AAE3F;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,2CA4BtD"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,WAAW;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,2CA4BtD"}
@@ -1,14 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
- export const ASCII_ART = [
4
- ' \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557',
5
- '\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u255a\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255d\u2588\u2588\u2551 \u2588\u2588\u2554\u255d',
6
- '\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2554\u255d',
7
- '\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2588\u2588\u2557',
8
- '\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2557',
9
- '\u255a\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u255d',
10
- ];
11
- export const GRADIENT = ['#FFCC00', '#FFAA00', '#FF8800', '#FF6600', '#FF4400', '#EE3300'];
3
+ import { ASCII_ART, GRADIENT } from './header-art.js';
4
+ export { ASCII_ART, GRADIENT };
12
5
  /**
13
6
  * Styled app banner with ASCII art and optional version number.
14
7
  * Used by the _app.tsx wrapper for consistent branding.
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAOhC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,oIAAoI;IACpI,mJAAmJ;IACnJ,oHAAoH;IACpH,oHAAoH;IACpH,sGAAsG;IACtG,sGAAsG;CACvG,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAE3F;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,OAAO,EAAe;IACrD,MAAM,KAAK,GAAG,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IAEjD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,GAAG,EAAE,CAAC,aAC7B,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,YAC1B,IAAI,IAD6B,CAAC,CAE9B,CACR,CAAC,GACE,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,aACjD,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,SAAS,gCAEnB,EACP,MAAC,GAAG,eACD,OAAO,IAAI,MAAC,IAAI,IAAC,QAAQ,wBAAG,OAAO,IAAQ,EAC3C,KAAK,IAAI,CACR,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,aACtB,GAAG,aAEC,CACR,IACG,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,OAAO,EAAe;IACrD,MAAM,KAAK,GAAG,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IAEjD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,GAAG,EAAE,CAAC,aAC7B,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,YAC1B,IAAI,IAD6B,CAAC,CAE9B,CACR,CAAC,GACE,EACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,aACjD,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,SAAS,gCAEnB,EACP,MAAC,GAAG,eACD,OAAO,IAAI,MAAC,IAAI,IAAC,QAAQ,wBAAG,OAAO,IAAQ,EAC3C,KAAK,IAAI,CACR,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,aACtB,GAAG,aAEC,CACR,IACG,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The banner's art and colours, with no Ink import, so `cli.tsx` can draw the help header without loading Ink
3
+ * (ATK-605). `Header.tsx` renders the same art.
4
+ */
5
+ export declare const ASCII_ART: string[];
6
+ export declare const GRADIENT: string[];
7
+ //# sourceMappingURL=header-art.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-art.d.ts","sourceRoot":"","sources":["../../src/components/header-art.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,SAAS,UAOrB,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAqE,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The banner's art and colours, with no Ink import, so `cli.tsx` can draw the help header without loading Ink
3
+ * (ATK-605). `Header.tsx` renders the same art.
4
+ */
5
+ export const ASCII_ART = [
6
+ ' █████╗ ████████╗██╗ ██╗',
7
+ '██╔══██╗╚══██╔══╝██║ ██╔╝',
8
+ '███████║ ██║ █████╔╝',
9
+ '██╔══██║ ██║ ██╔═██╗',
10
+ '██║ ██║ ██║ ██║ ██╗',
11
+ '╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝',
12
+ ];
13
+ export const GRADIENT = ['#FFCC00', '#FFAA00', '#FF8800', '#FF6600', '#FF4400', '#EE3300'];
14
+ //# sourceMappingURL=header-art.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-art.js","sourceRoot":"","sources":["../../src/components/header-art.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,2BAA2B;IAC3B,2BAA2B;IAC3B,0BAA0B;IAC1B,0BAA0B;IAC1B,2BAA2B;IAC3B,2BAA2B;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Argument, Option } from 'commander';
2
+ import type { ArgumentSpec, OptionSpec } from './internal-types.js';
3
+ /** commander's arguments from their specs, with no Zod (ATK-605). */
4
+ export declare function toArguments(specs: readonly ArgumentSpec[]): Argument[];
5
+ /** commander's options from their specs, with no Zod (ATK-605). */
6
+ export declare function toOptions(specs: readonly OptionSpec[]): Option[];
7
+ //# sourceMappingURL=commander-specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commander-specs.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/commander-specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpE,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,QAAQ,EAAE,CA2BtE;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,EAAE,CA8BhE"}
@@ -0,0 +1,50 @@
1
+ import { Argument, Option } from 'commander';
2
+ /** commander's arguments from their specs, with no Zod (ATK-605). */
3
+ export function toArguments(specs) {
4
+ return specs.map((spec) => {
5
+ const argument = new Argument(spec.name, spec.description);
6
+ if (spec.parse === 'number') {
7
+ argument.argParser((value) => Number.parseFloat(value));
8
+ }
9
+ if (spec.parse === 'number-list') {
10
+ // The default itself (not a list equal to it) is what commander passes before the first value.
11
+ argument.argParser((value, previousValue) => {
12
+ const joinPreviousValue = previousValue !== spec.defaultValue;
13
+ return joinPreviousValue ? [...(previousValue ?? []), Number.parseFloat(value)] : [Number.parseFloat(value)];
14
+ });
15
+ }
16
+ if (spec.choices) {
17
+ argument.choices(spec.choices);
18
+ }
19
+ if (spec.defaultValue !== undefined) {
20
+ argument.default(spec.defaultValue, spec.defaultValueDescription);
21
+ }
22
+ return argument;
23
+ });
24
+ }
25
+ /** commander's options from their specs, with no Zod (ATK-605). */
26
+ export function toOptions(specs) {
27
+ return specs.map((spec) => {
28
+ const option = new Option(spec.flags, spec.description);
29
+ // A set's default is carried as its members.
30
+ const defaultValue = spec.parse === 'set' && Array.isArray(spec.defaultValue) ? new Set(spec.defaultValue) : spec.defaultValue;
31
+ if (spec.parse === 'number') {
32
+ option.argParser((value) => Number.parseFloat(value));
33
+ }
34
+ if (spec.choices) {
35
+ option.choices(spec.choices);
36
+ }
37
+ if (spec.parse === 'set') {
38
+ // By identity, unlike upstream: values that add up to the default (`--tag a --tag b`) are still values.
39
+ option.argParser((value, previousValue) => {
40
+ const joinPreviousValue = previousValue instanceof Set && previousValue !== defaultValue;
41
+ return joinPreviousValue ? new Set([...previousValue, value]) : new Set([value]);
42
+ });
43
+ }
44
+ if (defaultValue !== undefined) {
45
+ option.default(defaultValue, spec.defaultValueDescription);
46
+ }
47
+ return option;
48
+ });
49
+ }
50
+ //# sourceMappingURL=commander-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commander-specs.js","sourceRoot":"","sources":["../../../src/lib/pastel/commander-specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAI7C,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,KAA8B;IACxD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YACjC,+FAA+F;YAC/F,QAAQ,CAAC,SAAS,CAAW,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBACpD,MAAM,iBAAiB,GAAG,aAAa,KAAK,IAAI,CAAC,YAAY,CAAC;gBAE9D,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/G,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,6CAA6C;QAC7C,MAAM,YAAY,GAChB,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE5G,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACzB,wGAAwG;YACxG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBACxC,MAAM,iBAAiB,GAAG,aAAa,YAAY,GAAG,IAAI,aAAa,KAAK,YAAY,CAAC;gBAEzF,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Argument } from 'commander';
2
- import { type CommandArguments } from './internal-types.js';
3
- export default function generateArguments(argumentsSchema: CommandArguments): Argument[];
1
+ import { type ArgumentSpec, type CommandArguments } from './internal-types.js';
2
+ /** Describe a command's Zod `args` as commander argument specs (`toArguments` in `commander-specs.ts` builds them). */
3
+ export default function describeArguments(argumentsSchema: CommandArguments): ArgumentSpec[];
4
4
  //# sourceMappingURL=generate-arguments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-arguments.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/generate-arguments.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAKrC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAqB5D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,eAAe,EAAE,gBAAgB,GAAG,QAAQ,EAAE,CAmHvF"}
1
+ {"version":3,"file":"generate-arguments.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/generate-arguments.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAqB/E,uHAAuH;AACvH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,eAAe,EAAE,gBAAgB,GAAG,YAAY,EAAE,CA0G3F"}
@@ -1,6 +1,4 @@
1
- import { Argument } from 'commander';
2
1
  import decamelize from 'decamelize';
3
- import { isDeepStrictEqual } from 'node:util';
4
2
  import { ZodArray, ZodDefault, ZodEnum, ZodNumber, ZodOptional, ZodTuple } from 'zod';
5
3
  import {} from './internal-types.js';
6
4
  import {} from './types.js';
@@ -18,7 +16,8 @@ const getDescription = (value) => {
18
16
  const getDefaultValueDescription = (value) => {
19
17
  return getConfig(value)?.defaultValueDescription;
20
18
  };
21
- export default function generateArguments(argumentsSchema) {
19
+ /** Describe a command's Zod `args` as commander argument specs (`toArguments` in `commander-specs.ts` builds them). */
20
+ export default function describeArguments(argumentsSchema) {
22
21
  let isOptionalByDefault = false;
23
22
  let arrayDefaultValue;
24
23
  let arrayName = getName(argumentsSchema.description);
@@ -65,47 +64,51 @@ export default function generateArguments(argumentsSchema) {
65
64
  name = getName(argumentSchema.description) ?? name;
66
65
  }
67
66
  name = decamelize(name ?? 'arg', { separator: '-' });
68
- const argument = new Argument(isOptional ? `[${name}]` : `<${name}>`, description);
67
+ const argument = spec(isOptional ? `[${name}]` : `<${name}>`, description);
69
68
  if (argumentSchema instanceof ZodNumber) {
70
- argument.argParser((value) => Number.parseFloat(value));
69
+ argument.parse = 'number';
71
70
  }
72
71
  if (argumentSchema instanceof ZodEnum) {
73
- argument.choices(Object.values(argumentSchema._zod.def.entries).map(String));
74
- }
75
- if (defaultValue !== undefined) {
76
- argument.default(defaultValue, defaultValueDescription);
72
+ argument.choices = Object.values(argumentSchema._zod.def.entries).map(String);
77
73
  }
74
+ setDefault(argument, defaultValue, defaultValueDescription);
78
75
  arguments_.push(argument);
79
76
  }
80
77
  const restSchema = argumentsSchema._zod.def.rest;
81
78
  if (restSchema) {
82
79
  const name = getName(restSchema.description) ?? 'arg';
83
- const argument = new Argument(`[${name}...]`, getDescription(restSchema.description));
80
+ const argument = spec(`[${name}...]`, getDescription(restSchema.description));
81
+ // No default, so every value joins the list.
84
82
  if (restSchema instanceof ZodNumber) {
85
- argument.argParser((value, previousValue) => {
86
- return [...(previousValue ?? []), Number.parseFloat(value)];
87
- });
83
+ argument.parse = 'number-list';
88
84
  }
89
85
  if (restSchema instanceof ZodEnum) {
90
- argument.choices(Object.values(restSchema._zod.def.entries).map(String));
86
+ argument.choices = Object.values(restSchema._zod.def.entries).map(String);
91
87
  }
92
88
  arguments_.push(argument);
93
89
  }
94
90
  }
95
91
  if (argumentsSchema instanceof ZodArray) {
96
92
  const name = arrayName ?? 'arg';
97
- const argument = new Argument(isOptionalByDefault ? `[${name}...]` : `<${name}...>`, arrayDescription);
98
- if (arrayDefaultValue !== undefined) {
99
- argument.default(arrayDefaultValue, arrayDefaultValueDescription);
100
- }
93
+ const argument = spec(isOptionalByDefault ? `[${name}...]` : `<${name}...>`, arrayDescription);
94
+ setDefault(argument, arrayDefaultValue, arrayDefaultValueDescription);
101
95
  if (argumentsSchema.element instanceof ZodNumber) {
102
- argument.argParser((value, previousValue) => {
103
- const joinPreviousValue = !isDeepStrictEqual(previousValue, arrayDefaultValue);
104
- return joinPreviousValue ? [...(previousValue ?? []), Number.parseFloat(value)] : [Number.parseFloat(value)];
105
- });
96
+ argument.parse = 'number-list';
106
97
  }
107
98
  arguments_.push(argument);
108
99
  }
109
100
  return arguments_;
110
101
  }
102
+ function setDefault(argument, defaultValue, defaultValueDescription) {
103
+ if (defaultValue === undefined) {
104
+ return;
105
+ }
106
+ argument.defaultValue = defaultValue;
107
+ if (defaultValueDescription) {
108
+ argument.defaultValueDescription = defaultValueDescription;
109
+ }
110
+ }
111
+ function spec(name, description) {
112
+ return description ? { description, name } : { name };
113
+ }
111
114
  //# sourceMappingURL=generate-arguments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-arguments.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-arguments.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-arguments.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-arguments.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { type Command as CommanderCommand } from 'commander';
2
- import { type ComponentType } from 'react';
3
- import { type Command } from './internal-types.js';
4
- import { type AppProps } from './types.js';
5
- declare const generateCommand: (commanderCommand: CommanderCommand, pastelCommand: Command, { appComponent }: {
6
- appComponent: ComponentType<AppProps>;
2
+ import type { CommandSpec } from './internal-types.js';
3
+ /**
4
+ * Set up a commander command from its spec. Its module is imported only when the command runs, and Ink with it
5
+ * (`render-command.tsx`), so `--help` and `--version` load neither (ATK-605).
6
+ */
7
+ declare const generateCommand: (commanderCommand: CommanderCommand, pastelCommand: CommandSpec, { commandsDirectory }: {
8
+ commandsDirectory: string;
7
9
  }) => void;
8
10
  export default generateCommand;
9
11
  //# sourceMappingURL=generate-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-command.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/generate-command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAKlD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,QAAA,MAAM,eAAe,GACnB,kBAAkB,gBAAgB,EAClC,eAAe,OAAO,EACtB,kBAAkB;IAAE,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;CAAE,SAiF5D,CAAC;AAWF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"generate-command.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/generate-command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAI7D,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvE;;;GAGG;AACH,QAAA,MAAM,eAAe,GACnB,kBAAkB,gBAAgB,EAClC,eAAe,WAAW,EAC1B,uBAAuB;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,SA0CrD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,12 +1,20 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
1
9
  import {} from 'commander';
2
- import { render } from 'ink';
3
- import React, {} from 'react';
4
- import { fromZodError } from 'zod-validation-error';
5
- import generateArguments from './generate-arguments.js';
6
- import generateOptions from './generate-options.js';
7
- import {} from './internal-types.js';
8
- import {} from './types.js';
9
- const generateCommand = (commanderCommand, pastelCommand, { appComponent }) => {
10
+ import path from 'node:path';
11
+ import { pathToFileURL } from 'node:url';
12
+ import { toArguments, toOptions } from './commander-specs.js';
13
+ /**
14
+ * Set up a commander command from its spec. Its module is imported only when the command runs, and Ink with it
15
+ * (`render-command.tsx`), so `--help` and `--version` load neither (ATK-605).
16
+ */
17
+ const generateCommand = (commanderCommand, pastelCommand, { commandsDirectory }) => {
10
18
  commanderCommand.helpOption('-h, --help', 'Show help');
11
19
  if (pastelCommand.description) {
12
20
  commanderCommand.description(pastelCommand.description);
@@ -14,67 +22,29 @@ const generateCommand = (commanderCommand, pastelCommand, { appComponent }) => {
14
22
  if (pastelCommand.alias) {
15
23
  commanderCommand.alias(pastelCommand.alias);
16
24
  }
17
- const optionsSchema = pastelCommand.options;
18
- if (optionsSchema) {
19
- const options = generateOptions(optionsSchema);
20
- for (const option of options) {
21
- commanderCommand.addOption(option);
22
- }
25
+ for (const option of toOptions(pastelCommand.options ?? [])) {
26
+ commanderCommand.addOption(option);
23
27
  }
24
- let hasVariadicArgument = false;
25
- const argumentsSchema = pastelCommand.args;
26
- if (argumentsSchema) {
27
- const arguments_ = generateArguments(argumentsSchema);
28
- for (const argument of arguments_) {
29
- if (argument.variadic) {
30
- hasVariadicArgument = true;
31
- }
32
- commanderCommand.addArgument(argument);
28
+ let variadic = false;
29
+ for (const argument of toArguments(pastelCommand.args ?? [])) {
30
+ if (argument.variadic) {
31
+ variadic = true;
33
32
  }
33
+ commanderCommand.addArgument(argument);
34
34
  }
35
- const { component } = pastelCommand;
36
- if (component) {
37
- commanderCommand.action((...input) => {
35
+ const { file } = pastelCommand;
36
+ if (file) {
37
+ commanderCommand.action(async (...input) => {
38
38
  // Remove the last argument, which is an instance of Commander command
39
39
  input.pop();
40
- const options = input.pop();
41
- let parsedOptions = {};
42
- if (pastelCommand.options) {
43
- const result = pastelCommand.options.safeParse(options);
44
- if (result.success) {
45
- parsedOptions = result.data ?? {};
46
- }
47
- else {
48
- rejectInput(commanderCommand, result.error);
49
- }
50
- }
51
- let arguments_ = [];
52
- if (pastelCommand.args) {
53
- const result = pastelCommand.args.safeParse(hasVariadicArgument ? input.flat() : input);
54
- if (result.success) {
55
- arguments_ = result.data ?? [];
56
- }
57
- else {
58
- rejectInput(commanderCommand, result.error);
59
- }
60
- }
61
- render(React.createElement(appComponent, {
62
- commandProps: {
63
- args: arguments_,
64
- options: parsedOptions,
65
- },
66
- Component: component,
67
- }));
40
+ const moduleUrl = pathToFileURL(path.join(commandsDirectory, file)).href;
41
+ const [module, { default: renderCommand }] = await Promise.all([
42
+ import(__rewriteRelativeImportExtension(moduleUrl)),
43
+ import('./render-command.js'),
44
+ ]);
45
+ await renderCommand(commanderCommand, module, { commandsDirectory, input, variadic });
68
46
  });
69
47
  }
70
48
  };
71
- /**
72
- * Options or arguments the command's schema rejects are a usage error, reported through commander like its own
73
- * (exit 2), so `Pastel`'s `onUsageError` sees them too.
74
- */
75
- function rejectInput(commanderCommand, error) {
76
- const { message } = fromZodError(error, { maxIssuesInMessage: 1, prefix: '', prefixSeparator: '' });
77
- commanderCommand.error(`error: ${message}`, { code: 'pastel.invalidInput', exitCode: 2 });
78
- }
79
49
  export default generateCommand;
80
50
  //# sourceMappingURL=generate-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-command.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-command.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-command.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-command.tsx"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAoC,MAAM,WAAW,CAAC;AAC7D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;GAGG;AACH,MAAM,eAAe,GAAG,CACtB,gBAAkC,EAClC,aAA0B,EAC1B,EAAE,iBAAiB,EAAiC,EACpD,EAAE;IACF,gBAAgB,CAAC,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAEvD,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;QAC9B,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5D,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAED,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IAE/B,IAAI,IAAI,EAAE,CAAC;QACT,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,KAAgB,EAAE,EAAE;YACpD,sEAAsE;YACtE,KAAK,CAAC,GAAG,EAAE,CAAC;YAEZ,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACzE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC7D,MAAM,kCAAC,SAAS,EAA4B;gBAC5C,MAAM,CAAC,qBAAqB,CAAC;aAC9B,CAAC,CAAC;YAEH,MAAM,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,9 +1,7 @@
1
1
  import { Command as CommanderCommand } from 'commander';
2
- import { type ComponentType } from 'react';
3
- import type { Command } from './internal-types.js';
4
- import { type AppProps } from './types.js';
5
- declare const generateCommands: (parentCommanderCommand: CommanderCommand, pastelCommands: Map<string, Command>, { appComponent }: {
6
- appComponent: ComponentType<AppProps>;
2
+ import type { CommandSpec } from './internal-types.js';
3
+ declare const generateCommands: (parentCommanderCommand: CommanderCommand, pastelCommands: readonly CommandSpec[], { commandsDirectory }: {
4
+ commandsDirectory: string;
7
5
  }) => void;
8
6
  export default generateCommands;
9
7
  //# sourceMappingURL=generate-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-commands.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/generate-commands.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,QAAA,MAAM,gBAAgB,GACpB,wBAAwB,gBAAgB,EACxC,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,kBAAkB;IAAE,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;CAAE,SAoB5D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"generate-commands.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/generate-commands.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,QAAA,MAAM,gBAAgB,GACpB,wBAAwB,gBAAgB,EACxC,gBAAgB,SAAS,WAAW,EAAE,EACtC,uBAAuB;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,SAkBrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,18 +1,14 @@
1
1
  import { Command as CommanderCommand } from 'commander';
2
- import {} from 'react';
3
2
  import generateCommand from './generate-command.js';
4
- import {} from './types.js';
5
- const generateCommands = (parentCommanderCommand, pastelCommands, { appComponent }) => {
6
- if (pastelCommands.size > 0) {
3
+ const generateCommands = (parentCommanderCommand, pastelCommands, { commandsDirectory }) => {
4
+ if (pastelCommands.length > 0) {
7
5
  parentCommanderCommand.addHelpCommand('help [command]', 'Show help for command');
8
6
  }
9
- for (const [name, pastelCommand] of pastelCommands) {
10
- const commanderCommand = new CommanderCommand(name);
11
- generateCommand(commanderCommand, pastelCommand, { appComponent });
7
+ for (const pastelCommand of pastelCommands) {
8
+ const commanderCommand = new CommanderCommand(pastelCommand.name);
9
+ generateCommand(commanderCommand, pastelCommand, { commandsDirectory });
12
10
  if (pastelCommand.commands) {
13
- generateCommands(commanderCommand, pastelCommand.commands, {
14
- appComponent,
15
- });
11
+ generateCommands(commanderCommand, pastelCommand.commands, { commandsDirectory });
16
12
  }
17
13
  parentCommanderCommand.addCommand(commanderCommand, {
18
14
  isDefault: pastelCommand.isDefault,
@@ -1 +1 @@
1
- {"version":3,"file":"generate-commands.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-commands.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAiB,MAAM,YAAY,CAAC;AAE3C,MAAM,gBAAgB,GAAG,CACvB,sBAAwC,EACxC,cAAoC,EACpC,EAAE,YAAY,EAA6C,EAC3D,EAAE;IACF,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC5B,sBAAsB,CAAC,cAAc,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,cAAc,EAAE,CAAC;QACnD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpD,eAAe,CAAC,gBAAgB,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAEnE,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC3B,gBAAgB,CAAC,gBAAgB,EAAE,aAAa,CAAC,QAAQ,EAAE;gBACzD,YAAY;aACb,CAAC,CAAC;QACL,CAAC;QAED,sBAAsB,CAAC,UAAU,CAAC,gBAAgB,EAAE;YAClD,SAAS,EAAE,aAAa,CAAC,SAAS;SACnC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"generate-commands.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-commands.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAIxD,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAEpD,MAAM,gBAAgB,GAAG,CACvB,sBAAwC,EACxC,cAAsC,EACtC,EAAE,iBAAiB,EAAiC,EACpD,EAAE;IACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,sBAAsB,CAAC,cAAc,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAClE,eAAe,CAAC,gBAAgB,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAExE,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC3B,gBAAgB,CAAC,gBAAgB,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,sBAAsB,CAAC,UAAU,CAAC,gBAAgB,EAAE;YAClD,SAAS,EAAE,aAAa,CAAC,SAAS;SACnC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Option } from 'commander';
2
- import { type CommandOptions } from './internal-types.js';
3
- export default function generateOptions(optionsSchema: CommandOptions): Option[];
1
+ import { type CommandOptions, type OptionSpec } from './internal-types.js';
2
+ /** Describe a command's Zod `options` as commander option specs (`toOptions` in `commander-specs.ts` builds them). */
3
+ export default function describeOptions(optionsSchema: CommandOptions): OptionSpec[];
4
4
  //# sourceMappingURL=generate-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-options.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/generate-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMnC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAyB1D,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,aAAa,EAAE,cAAc,GAAG,MAAM,EAAE,CAqG/E"}
1
+ {"version":3,"file":"generate-options.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/generate-options.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAyB3E,sHAAsH;AACtH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,aAAa,EAAE,cAAc,GAAG,UAAU,EAAE,CA0GnF"}
@@ -1,6 +1,4 @@
1
- import { Option } from 'commander';
2
1
  import decamelize from 'decamelize';
3
- import { isDeepStrictEqual } from 'node:util';
4
2
  import plur from 'plur';
5
3
  import { ZodArray, ZodBoolean, ZodDefault, ZodEnum, ZodNumber, ZodOptional, ZodSet } from 'zod';
6
4
  import {} from './internal-types.js';
@@ -22,7 +20,8 @@ const getValueDescription = (value) => {
22
20
  const getAlias = (value) => {
23
21
  return getConfig(value)?.alias;
24
22
  };
25
- export default function generateOptions(optionsSchema) {
23
+ /** Describe a command's Zod `options` as commander option specs (`toOptions` in `commander-specs.ts` builds them). */
24
+ export default function describeOptions(optionsSchema) {
26
25
  let isOptionalByDefault = false;
27
26
  if (optionsSchema instanceof ZodOptional) {
28
27
  isOptionalByDefault = true;
@@ -71,27 +70,31 @@ export default function generateOptions(optionsSchema) {
71
70
  const rest = isVariadic ? '...' : '';
72
71
  flag += isOptional || defaultValue ? ` [${valueDescription}${rest}]` : ` <${valueDescription}${rest}>`;
73
72
  }
74
- const option = new Option(flag, description);
73
+ const option = { flags: flag };
74
+ if (description) {
75
+ option.description = description;
76
+ }
75
77
  if (optionSchema instanceof ZodNumber) {
76
- option.argParser((value) => Number.parseFloat(value));
78
+ option.parse = 'number';
77
79
  }
78
80
  if (optionSchema instanceof ZodEnum) {
79
- option.choices(Object.values(optionSchema._zod.def.entries).map(String));
81
+ option.choices = Object.values(optionSchema._zod.def.entries).map(String);
80
82
  }
81
83
  if (optionSchema instanceof ZodBoolean && defaultValue === undefined) {
82
84
  defaultValue = false;
83
85
  }
84
86
  if (optionSchema instanceof ZodSet) {
85
- option.argParser((value, previousValue) => {
86
- const joinPreviousValue = previousValue instanceof Set && !isDeepStrictEqual(previousValue, defaultValue);
87
- return joinPreviousValue ? new Set([...previousValue, value]) : new Set([value]);
88
- });
87
+ option.parse = 'set';
89
88
  }
90
89
  if (defaultValue !== undefined) {
91
- if (!defaultValueDescription && defaultValue instanceof Set) {
92
- defaultValueDescription = JSON.stringify([...defaultValue]);
90
+ if (defaultValue instanceof Set) {
91
+ defaultValueDescription ||= JSON.stringify([...defaultValue]);
92
+ defaultValue = [...defaultValue];
93
+ }
94
+ option.defaultValue = defaultValue;
95
+ if (defaultValueDescription) {
96
+ option.defaultValueDescription = defaultValueDescription;
93
97
  }
94
- option.default(defaultValue, defaultValueDescription);
95
98
  }
96
99
  options.push(option);
97
100
  }