@detergent-software/atk 8.9.0-dev.9 → 8.9.1-dev.1

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 (260) hide show
  1. package/CHANGELOG.md +262 -0
  2. package/README.md +22 -12
  3. package/build/cli.js +18 -6
  4. package/build/cli.js.map +1 -1
  5. package/build/command-manifest.json +1507 -0
  6. package/build/commands/_app.d.ts.map +1 -1
  7. package/build/commands/_app.js +8 -4
  8. package/build/commands/_app.js.map +1 -1
  9. package/build/commands/audit.d.ts.map +1 -1
  10. package/build/commands/audit.js +1 -1
  11. package/build/commands/audit.js.map +1 -1
  12. package/build/commands/browse.js +2 -2
  13. package/build/commands/browse.js.map +1 -1
  14. package/build/commands/cache.d.ts +1 -1
  15. package/build/commands/cache.d.ts.map +1 -1
  16. package/build/commands/cache.js +1 -16
  17. package/build/commands/cache.js.map +1 -1
  18. package/build/commands/config.d.ts.map +1 -1
  19. package/build/commands/config.js +1 -1
  20. package/build/commands/config.js.map +1 -1
  21. package/build/commands/diff.d.ts.map +1 -1
  22. package/build/commands/diff.js +4 -0
  23. package/build/commands/diff.js.map +1 -1
  24. package/build/commands/drift.d.ts.map +1 -1
  25. package/build/commands/drift.js +4 -0
  26. package/build/commands/drift.js.map +1 -1
  27. package/build/commands/index.d.ts.map +1 -1
  28. package/build/commands/index.js +5 -40
  29. package/build/commands/index.js.map +1 -1
  30. package/build/commands/info.d.ts.map +1 -1
  31. package/build/commands/info.js +50 -33
  32. package/build/commands/info.js.map +1 -1
  33. package/build/commands/init.d.ts.map +1 -1
  34. package/build/commands/init.js +4 -2
  35. package/build/commands/init.js.map +1 -1
  36. package/build/commands/install.d.ts.map +1 -1
  37. package/build/commands/install.js +28 -7
  38. package/build/commands/install.js.map +1 -1
  39. package/build/commands/list.js +2 -2
  40. package/build/commands/list.js.map +1 -1
  41. package/build/commands/login.d.ts.map +1 -1
  42. package/build/commands/login.js +12 -2
  43. package/build/commands/login.js.map +1 -1
  44. package/build/commands/logout.d.ts.map +1 -1
  45. package/build/commands/logout.js +9 -1
  46. package/build/commands/logout.js.map +1 -1
  47. package/build/commands/outdated.js +1 -1
  48. package/build/commands/outdated.js.map +1 -1
  49. package/build/commands/prune.d.ts.map +1 -1
  50. package/build/commands/prune.js +4 -2
  51. package/build/commands/prune.js.map +1 -1
  52. package/build/commands/publish.d.ts +1 -1
  53. package/build/commands/publish.d.ts.map +1 -1
  54. package/build/commands/publish.js +14 -14
  55. package/build/commands/publish.js.map +1 -1
  56. package/build/commands/release-notes.d.ts.map +1 -1
  57. package/build/commands/release-notes.js +4 -0
  58. package/build/commands/release-notes.js.map +1 -1
  59. package/build/commands/schema.d.ts +3 -3
  60. package/build/commands/search.js +1 -1
  61. package/build/commands/search.js.map +1 -1
  62. package/build/commands/sync.d.ts +1 -1
  63. package/build/commands/sync.d.ts.map +1 -1
  64. package/build/commands/sync.js +27 -12
  65. package/build/commands/sync.js.map +1 -1
  66. package/build/commands/update.d.ts.map +1 -1
  67. package/build/commands/update.js +58 -9
  68. package/build/commands/update.js.map +1 -1
  69. package/build/commands/whoami.d.ts.map +1 -1
  70. package/build/commands/whoami.js +16 -4
  71. package/build/commands/whoami.js.map +1 -1
  72. package/build/commands/why.js +3 -4
  73. package/build/commands/why.js.map +1 -1
  74. package/build/components/Header.d.ts +2 -3
  75. package/build/components/Header.d.ts.map +1 -1
  76. package/build/components/Header.js +2 -9
  77. package/build/components/Header.js.map +1 -1
  78. package/build/components/LocalEditsHint.d.ts +16 -0
  79. package/build/components/LocalEditsHint.d.ts.map +1 -0
  80. package/build/components/LocalEditsHint.js +18 -0
  81. package/build/components/LocalEditsHint.js.map +1 -0
  82. package/build/components/SyncAllInSync.d.ts +5 -1
  83. package/build/components/SyncAllInSync.d.ts.map +1 -1
  84. package/build/components/SyncAllInSync.js +2 -2
  85. package/build/components/SyncAllInSync.js.map +1 -1
  86. package/build/components/header-art.d.ts +7 -0
  87. package/build/components/header-art.d.ts.map +1 -0
  88. package/build/components/header-art.js +14 -0
  89. package/build/components/header-art.js.map +1 -0
  90. package/build/components/index.d.ts +1 -0
  91. package/build/components/index.d.ts.map +1 -1
  92. package/build/components/index.js +1 -0
  93. package/build/components/index.js.map +1 -1
  94. package/build/hooks/useListActions.d.ts.map +1 -1
  95. package/build/hooks/useListActions.js +4 -0
  96. package/build/hooks/useListActions.js.map +1 -1
  97. package/build/hooks/usePruneState.d.ts +1 -7
  98. package/build/hooks/usePruneState.d.ts.map +1 -1
  99. package/build/hooks/usePruneState.js +18 -62
  100. package/build/hooks/usePruneState.js.map +1 -1
  101. package/build/lib/adapter.d.ts +10 -1
  102. package/build/lib/adapter.d.ts.map +1 -1
  103. package/build/lib/adapter.js +23 -0
  104. package/build/lib/adapter.js.map +1 -1
  105. package/build/lib/api-client.d.ts +9 -5
  106. package/build/lib/api-client.d.ts.map +1 -1
  107. package/build/lib/api-client.js +35 -8
  108. package/build/lib/api-client.js.map +1 -1
  109. package/build/lib/auth.d.ts +12 -2
  110. package/build/lib/auth.d.ts.map +1 -1
  111. package/build/lib/auth.js +38 -3
  112. package/build/lib/auth.js.map +1 -1
  113. package/build/lib/checksum.d.ts +10 -0
  114. package/build/lib/checksum.d.ts.map +1 -1
  115. package/build/lib/checksum.js +17 -0
  116. package/build/lib/checksum.js.map +1 -1
  117. package/build/lib/config.d.ts +4 -4
  118. package/build/lib/config.d.ts.map +1 -1
  119. package/build/lib/config.js +31 -8
  120. package/build/lib/config.js.map +1 -1
  121. package/build/lib/diagnostics.d.ts.map +1 -1
  122. package/build/lib/diagnostics.js +10 -7
  123. package/build/lib/diagnostics.js.map +1 -1
  124. package/build/lib/diff-command.js +1 -1
  125. package/build/lib/diff-command.js.map +1 -1
  126. package/build/lib/errors.d.ts +4 -1
  127. package/build/lib/errors.d.ts.map +1 -1
  128. package/build/lib/errors.js.map +1 -1
  129. package/build/lib/format-age.d.ts +3 -0
  130. package/build/lib/format-age.d.ts.map +1 -0
  131. package/build/lib/format-age.js +18 -0
  132. package/build/lib/format-age.js.map +1 -0
  133. package/build/lib/installer.d.ts +6 -4
  134. package/build/lib/installer.d.ts.map +1 -1
  135. package/build/lib/installer.js +53 -23
  136. package/build/lib/installer.js.map +1 -1
  137. package/build/lib/local-edits.d.ts +72 -0
  138. package/build/lib/local-edits.d.ts.map +1 -0
  139. package/build/lib/local-edits.js +145 -0
  140. package/build/lib/local-edits.js.map +1 -0
  141. package/build/lib/lockfile.d.ts +2 -2
  142. package/build/lib/lockfile.d.ts.map +1 -1
  143. package/build/lib/lockfile.js +28 -19
  144. package/build/lib/lockfile.js.map +1 -1
  145. package/build/lib/mover.d.ts.map +1 -1
  146. package/build/lib/mover.js +11 -12
  147. package/build/lib/mover.js.map +1 -1
  148. package/build/lib/multi-tool-install.d.ts +4 -2
  149. package/build/lib/multi-tool-install.d.ts.map +1 -1
  150. package/build/lib/multi-tool-install.js +12 -2
  151. package/build/lib/multi-tool-install.js.map +1 -1
  152. package/build/lib/offline.d.ts +19 -0
  153. package/build/lib/offline.d.ts.map +1 -0
  154. package/build/lib/offline.js +26 -0
  155. package/build/lib/offline.js.map +1 -0
  156. package/build/lib/owned-paths.d.ts +3 -2
  157. package/build/lib/owned-paths.d.ts.map +1 -1
  158. package/build/lib/owned-paths.js +4 -2
  159. package/build/lib/owned-paths.js.map +1 -1
  160. package/build/lib/parse-json.d.ts +12 -0
  161. package/build/lib/parse-json.d.ts.map +1 -1
  162. package/build/lib/parse-json.js +15 -2
  163. package/build/lib/parse-json.js.map +1 -1
  164. package/build/lib/pastel/commander-specs.d.ts +7 -0
  165. package/build/lib/pastel/commander-specs.d.ts.map +1 -0
  166. package/build/lib/pastel/commander-specs.js +50 -0
  167. package/build/lib/pastel/commander-specs.js.map +1 -0
  168. package/build/lib/pastel/generate-arguments.d.ts +3 -3
  169. package/build/lib/pastel/generate-arguments.d.ts.map +1 -1
  170. package/build/lib/pastel/generate-arguments.js +25 -22
  171. package/build/lib/pastel/generate-arguments.js.map +1 -1
  172. package/build/lib/pastel/generate-command.d.ts +7 -5
  173. package/build/lib/pastel/generate-command.d.ts.map +1 -1
  174. package/build/lib/pastel/generate-command.js +32 -67
  175. package/build/lib/pastel/generate-command.js.map +1 -1
  176. package/build/lib/pastel/generate-commands.d.ts +3 -5
  177. package/build/lib/pastel/generate-commands.d.ts.map +1 -1
  178. package/build/lib/pastel/generate-commands.js +6 -10
  179. package/build/lib/pastel/generate-commands.js.map +1 -1
  180. package/build/lib/pastel/generate-options.d.ts +3 -3
  181. package/build/lib/pastel/generate-options.d.ts.map +1 -1
  182. package/build/lib/pastel/generate-options.js +16 -13
  183. package/build/lib/pastel/generate-options.js.map +1 -1
  184. package/build/lib/pastel/index.d.ts +26 -4
  185. package/build/lib/pastel/index.d.ts.map +1 -1
  186. package/build/lib/pastel/index.js +104 -18
  187. package/build/lib/pastel/index.js.map +1 -1
  188. package/build/lib/pastel/internal-types.d.ts +39 -8
  189. package/build/lib/pastel/internal-types.d.ts.map +1 -1
  190. package/build/lib/pastel/manifest.d.ts +8 -0
  191. package/build/lib/pastel/manifest.d.ts.map +1 -0
  192. package/build/lib/pastel/manifest.js +7 -0
  193. package/build/lib/pastel/manifest.js.map +1 -0
  194. package/build/lib/pastel/read-commands.d.ts +7 -2
  195. package/build/lib/pastel/read-commands.d.ts.map +1 -1
  196. package/build/lib/pastel/read-commands.js +51 -30
  197. package/build/lib/pastel/read-commands.js.map +1 -1
  198. package/build/lib/pastel/render-command.d.ts +13 -0
  199. package/build/lib/pastel/render-command.d.ts.map +1 -0
  200. package/build/lib/pastel/render-command.js +56 -0
  201. package/build/lib/pastel/render-command.js.map +1 -0
  202. package/build/lib/process-alive.d.ts +11 -0
  203. package/build/lib/process-alive.d.ts.map +1 -0
  204. package/build/lib/process-alive.js +22 -0
  205. package/build/lib/process-alive.js.map +1 -0
  206. package/build/lib/pruner.d.ts +26 -0
  207. package/build/lib/pruner.d.ts.map +1 -0
  208. package/build/lib/pruner.js +42 -0
  209. package/build/lib/pruner.js.map +1 -0
  210. package/build/lib/publish-flow.d.ts +3 -6
  211. package/build/lib/publish-flow.d.ts.map +1 -1
  212. package/build/lib/publish-flow.js +199 -246
  213. package/build/lib/publish-flow.js.map +1 -1
  214. package/build/lib/publish-run.d.ts +2 -2
  215. package/build/lib/publish-run.js +11 -6
  216. package/build/lib/publish-run.js.map +1 -1
  217. package/build/lib/publisher.d.ts +23 -16
  218. package/build/lib/publisher.d.ts.map +1 -1
  219. package/build/lib/publisher.js +34 -35
  220. package/build/lib/publisher.js.map +1 -1
  221. package/build/lib/registrar.d.ts.map +1 -1
  222. package/build/lib/registrar.js +2 -2
  223. package/build/lib/registrar.js.map +1 -1
  224. package/build/lib/registry.d.ts +18 -7
  225. package/build/lib/registry.d.ts.map +1 -1
  226. package/build/lib/registry.js +113 -32
  227. package/build/lib/registry.js.map +1 -1
  228. package/build/lib/schemas/config.d.ts +3 -1
  229. package/build/lib/schemas/config.d.ts.map +1 -1
  230. package/build/lib/schemas/config.js +1 -1
  231. package/build/lib/schemas/config.js.map +1 -1
  232. package/build/lib/setup.d.ts.map +1 -1
  233. package/build/lib/setup.js +53 -48
  234. package/build/lib/setup.js.map +1 -1
  235. package/build/lib/sync.d.ts +22 -6
  236. package/build/lib/sync.d.ts.map +1 -1
  237. package/build/lib/sync.js +31 -7
  238. package/build/lib/sync.js.map +1 -1
  239. package/build/lib/uninstaller.d.ts.map +1 -1
  240. package/build/lib/uninstaller.js +6 -3
  241. package/build/lib/uninstaller.js.map +1 -1
  242. package/build/lib/update-check.d.ts +4 -0
  243. package/build/lib/update-check.d.ts.map +1 -1
  244. package/build/lib/update-check.js +55 -56
  245. package/build/lib/update-check.js.map +1 -1
  246. package/build/lib/updater.d.ts +31 -1
  247. package/build/lib/updater.d.ts.map +1 -1
  248. package/build/lib/updater.js +143 -4
  249. package/build/lib/updater.js.map +1 -1
  250. package/build/lib/usage-error.d.ts +20 -0
  251. package/build/lib/usage-error.d.ts.map +1 -0
  252. package/build/lib/usage-error.js +41 -0
  253. package/build/lib/usage-error.js.map +1 -0
  254. package/build/lib/user-setup.d.ts.map +1 -1
  255. package/build/lib/user-setup.js +62 -59
  256. package/build/lib/user-setup.js.map +1 -1
  257. package/build/lib/write-file.d.ts.map +1 -1
  258. package/build/lib/write-file.js +63 -11
  259. package/build/lib/write-file.js.map +1 -1
  260. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"generate-options.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-options.js","sourceRoot":"","sources":["../../../src/lib/pastel/generate-options.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,24 @@
1
+ import type { CommandManifest } from './internal-types.js';
1
2
  import type { CommandArgumentConfig, CommandOptionConfig } from './types.js';
2
3
  export type Options = {
4
+ /**
5
+ * The commands, described ahead of time by `describeCommands` (`lib/pastel/manifest.js`), so a run imports only
6
+ * the command it runs. Without it, Pastel imports every command in the `commands` folder to describe them.
7
+ */
8
+ commands?: CommandManifest;
3
9
  /**
4
10
  * Description. Defaults to `description` in the nearest package.json.
5
11
  */
6
12
  description?: string;
13
+ /**
14
+ * Options every command accepts, before or after its name (commander's program options), listed under
15
+ * "Global Options" in each command's help. Pastel only declares them: commands don't receive their values, so the
16
+ * app reads them itself.
17
+ */
18
+ globalOptions?: ReadonlyArray<{
19
+ description: string;
20
+ flags: string;
21
+ }>;
7
22
  /**
8
23
  * Text to display before all help output.
9
24
  */
@@ -16,11 +31,21 @@ export type Options = {
16
31
  * Program name. Defaults to `name` in the nearest package.json or the name of the executable.
17
32
  */
18
33
  name?: string;
34
+ /**
35
+ * Called with commander's message (`error: …`) for a usage error: an unknown option or command, a missing or
36
+ * invalid argument, or options or arguments the command's schema rejects. It must exit. Help and version output
37
+ * are not usage errors. Without it, commander prints the message and exits as upstream Pastel does.
38
+ */
39
+ onUsageError?: (message: string) => never;
19
40
  /**
20
41
  * Version. Defaults to `version` in the nearest package.json.
21
42
  */
22
43
  version?: string;
23
44
  };
45
+ /**
46
+ * Set additional metadata for an option. Must be used as an argument to `describe` function from Zod.
47
+ */
48
+ export declare function option(config: CommandOptionConfig): string;
24
49
  export default class Pastel {
25
50
  private readonly options;
26
51
  constructor(options: Options);
@@ -33,9 +58,6 @@ export default class Pastel {
33
58
  * Set additional metadata for an argument. Must be used as an argument to `describe` function from Zod.
34
59
  */
35
60
  export declare function argument(config: CommandArgumentConfig): string;
36
- /**
37
- * Set additional metadata for an option. Must be used as an argument to `describe` function from Zod.
38
- */
39
- export declare function option(config: CommandOptionConfig): string;
61
+ export type { CommandManifest } from './internal-types.js';
40
62
  export * from './types.js';
41
63
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAQ7E,MAAM,MAAM,OAAO,GAAG;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEtB,OAAO,EAAE,OAAO;IAI5B;;OAEG;IACG,GAAG,CAAC,IAAI,GAAE,MAAM,EAAiB;CAwCxC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,UAErD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,mBAAmB,UAEjD;AAED,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAK7E,MAAM,MAAM,OAAO,GAAG;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEtE;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;IAE1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAQF;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,mBAAmB,UAEjD;AAED,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEtB,OAAO,EAAE,OAAO;IAI5B;;OAEG;IACG,GAAG,CAAC,IAAI,GAAE,MAAM,EAAiB;CA+DxC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,UAErD;AAwFD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,cAAc,YAAY,CAAC"}
@@ -1,12 +1,18 @@
1
1
  import { Command } from 'commander';
2
2
  import process from 'node:process';
3
3
  import { fileURLToPath } from 'node:url';
4
- import { readPackageUp } from 'read-package-up';
5
- import App from './_app.js';
6
4
  import generateCommand from './generate-command.js';
7
5
  import generateCommands from './generate-commands.js';
8
- import readCommands from './read-commands.js';
9
- import readCustomApp from './read-custom-app.js';
6
+ /** Commander's exits that are output, not errors: `--help`, `help`, a bare command group, `--version`. */
7
+ const NOT_USAGE_ERRORS = new Set(['commander.help', 'commander.helpDisplayed', 'commander.version']);
8
+ /** The help and version flags `run` sets. Commander acts on them wherever they come, ahead of any command word. */
9
+ const OUTPUT_FLAGS = new Set(['--help', '--version', '-h', '-v']);
10
+ /**
11
+ * Set additional metadata for an option. Must be used as an argument to `describe` function from Zod.
12
+ */
13
+ export function option(config) {
14
+ return `__pastel_option_config__${JSON.stringify(config)}`;
15
+ }
10
16
  export default class Pastel {
11
17
  options;
12
18
  constructor(options) {
@@ -17,30 +23,48 @@ export default class Pastel {
17
23
  */
18
24
  async run(argv = process.argv) {
19
25
  const commandsDirectory = fileURLToPath(new URL('commands', this.options.importMeta.url));
20
- const appComponent = (await readCustomApp(commandsDirectory)) ?? App;
21
26
  const program = new Command();
22
- const commands = await readCommands(commandsDirectory);
23
- const indexCommand = commands.get('index');
27
+ const commands = this.options.commands ?? (await (await import('./manifest.js')).describeCommands(commandsDirectory));
28
+ const indexCommand = commands.find((command) => command.name === 'index');
24
29
  if (indexCommand) {
25
- generateCommand(program, indexCommand, { appComponent });
26
- commands.delete('index');
30
+ generateCommand(program, indexCommand, { commandsDirectory });
27
31
  }
28
- generateCommands(program, commands, { appComponent });
32
+ generateCommands(program, commands.filter((command) => command !== indexCommand), { commandsDirectory });
29
33
  if (this.options.name) {
30
34
  program.name(this.options.name);
31
35
  }
32
- const package_ = await readPackageUp();
33
- const version = this.options.version ?? package_?.packageJson.version;
36
+ let version = this.options.version;
37
+ let description = indexCommand?.description ?? this.options.description;
38
+ // Only for what the app didn't pass: read-package-up loads about 50 ms of modules (ATK-605).
39
+ if (version === undefined || description === undefined) {
40
+ const { readPackageUp } = await import('read-package-up');
41
+ const package_ = await readPackageUp();
42
+ version ??= package_?.packageJson.version;
43
+ description ??= package_?.packageJson.description;
44
+ }
34
45
  if (version) {
35
46
  program.version(version, '-v, --version', 'Show version number');
36
47
  }
37
- const description = indexCommand?.description ?? this.options.description ?? package_?.packageJson.description ?? '';
38
- program.description(description);
48
+ program.description(description ?? '');
39
49
  program.helpOption('-h, --help', 'Show help');
40
50
  if (this.options.helpHeader) {
41
51
  program.addHelpText('beforeAll', this.options.helpHeader);
42
52
  }
43
- program.parse(argv);
53
+ if (this.options.globalOptions) {
54
+ for (const { description, flags } of this.options.globalOptions) {
55
+ program.option(flags, description);
56
+ }
57
+ showGlobalOptions(program);
58
+ }
59
+ if (this.options.onUsageError) {
60
+ routeUsageErrors(program, this.options.onUsageError);
61
+ }
62
+ // A default command takes the words no other command names, so they aren't unknown.
63
+ if (indexCommand && !indexCommand.args?.length && !commands.some((command) => command.isDefault)) {
64
+ rejectUnknownCommand(program, argv.slice(2));
65
+ }
66
+ // Async, because a command's action imports its module.
67
+ await program.parseAsync(argv);
44
68
  }
45
69
  }
46
70
  /**
@@ -50,10 +74,72 @@ export function argument(config) {
50
74
  return `__pastel_argument_config__${JSON.stringify(config)}`;
51
75
  }
52
76
  /**
53
- * Set additional metadata for an option. Must be used as an argument to `describe` function from Zod.
77
+ * The first argument that is neither one of the program's options nor an option's value, as commander's parse reads
78
+ * them: a required value always follows its flag, an optional one when the next argument isn't an option. Undefined
79
+ * at an option the program doesn't declare.
54
80
  */
55
- export function option(config) {
56
- return `__pastel_option_config__${JSON.stringify(config)}`;
81
+ function firstWord(args, options) {
82
+ for (let index = 0; index < args.length; index++) {
83
+ const arg = args[index] ?? '';
84
+ if (!arg.startsWith('-')) {
85
+ return arg;
86
+ }
87
+ const [flag] = arg.split('=', 1);
88
+ const option = options.find((candidate) => candidate.long === flag || candidate.short === flag);
89
+ if (!option) {
90
+ return undefined;
91
+ }
92
+ const next = args[index + 1];
93
+ if (!arg.includes('=') && (option.required || (option.optional && next !== undefined && !next.startsWith('-')))) {
94
+ index++;
95
+ }
96
+ }
97
+ return undefined;
98
+ }
99
+ /**
100
+ * The index command is the program's own action, so commander hands it every first word that names no command, and
101
+ * an index with no arguments reports "too many arguments" for it, or an option after the word as unknown. Report the
102
+ * word as commander reports an unknown command when the program has no action, with its "Did you mean …?" (ATK-594).
103
+ * Help and version, an option the program doesn't declare, and everything after `--` are left to commander.
104
+ */
105
+ function rejectUnknownCommand(program, args) {
106
+ const end = args.indexOf('--');
107
+ const scanned = end === -1 ? args : args.slice(0, end);
108
+ if (program.commands.length === 0 || scanned.some((arg) => OUTPUT_FLAGS.has(arg))) {
109
+ return;
110
+ }
111
+ const word = firstWord(scanned, program.options);
112
+ if (word === undefined ||
113
+ word === 'help' ||
114
+ program.commands.some((command) => command.name() === word || command.aliases().includes(word))) {
115
+ return;
116
+ }
117
+ // Commander words the error and its suggestion from `args`. The method isn't in its typings.
118
+ program.args = [word];
119
+ program.unknownCommand();
120
+ }
121
+ /**
122
+ * Send every command's usage errors to `onUsageError`. Commands added with `addCommand` don't inherit their
123
+ * parent's `exitOverride` or `configureOutput`, so each one gets its own.
124
+ */
125
+ function routeUsageErrors(command, onUsageError) {
126
+ command.configureOutput({ outputError: () => { } });
127
+ command.exitOverride((error) => {
128
+ if (NOT_USAGE_ERRORS.has(error.code)) {
129
+ process.exit(error.exitCode);
130
+ }
131
+ onUsageError(error.message);
132
+ });
133
+ for (const subcommand of command.commands) {
134
+ routeUsageErrors(subcommand, onUsageError);
135
+ }
136
+ }
137
+ /** List the program's options under "Global Options" in every command's help; `addCommand` doesn't inherit it. */
138
+ function showGlobalOptions(command) {
139
+ command.configureHelp({ ...command.configureHelp(), showGlobalOptions: true });
140
+ for (const subcommand of command.commands) {
141
+ showGlobalOptions(subcommand);
142
+ }
57
143
  }
58
144
  export * from './types.js';
59
145
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pastel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,aAAa,MAAM,sBAAsB,CAAC;AA6BjD,MAAM,CAAC,OAAO,OAAO,MAAM;IACR,OAAO,CAAU;IAElC,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI;QACrC,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1F,MAAM,YAAY,GAAG,CAAC,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC,IAAI,GAAG,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI,YAAY,EAAE,CAAC;YACjB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YACzD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC;QAEtE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,WAAW,GACf,YAAY,EAAE,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC;QAEnG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA6B;IACpD,OAAO,6BAA6B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,MAA2B;IAChD,OAAO,2BAA2B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/pastel/index.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,19 @@
1
1
  import type { ComponentType } from 'react';
2
2
  import type { ZodArray, ZodBoolean, ZodDefault, ZodEnum, ZodNumber, ZodObject, ZodOptional, ZodSet, ZodString, ZodTuple, ZodTypeAny } from 'zod';
3
3
  import { type AppProps } from './types.js';
4
- export type Command = {
5
- alias?: string;
6
- args?: CommandArguments;
7
- commands?: Map<string, Command>;
8
- component?: ComponentType<AppProps['commandProps']>;
4
+ /**
5
+ * A commander argument as plain data, described from a command's Zod `args` (`generate-arguments.tsx`) and turned
6
+ * back into an `Argument` without Zod (`commander-specs.ts`), so a manifest can carry it (ATK-605).
7
+ */
8
+ export type ArgumentSpec = {
9
+ choices?: string[];
10
+ defaultValue?: unknown;
11
+ defaultValueDescription?: string;
9
12
  description?: string;
10
- isDefault: boolean;
13
+ /** commander's name with its brackets: `<name>`, `[name]`, `[name...]`. */
11
14
  name: string;
12
- options?: CommandOptions;
13
- parentCommand?: Command;
15
+ /** `number`: one number; `number-list`: numbers collected into an array, restarting from the default. */
16
+ parse?: 'number' | 'number-list';
14
17
  };
15
18
  export type CommandArgument = ZodEnum<Record<string, number | string>> | ZodNumber | ZodString;
16
19
  export type CommandArguments = ZodMaybeOptionalOrDefault<CommandArgumentsArray | CommandArgumentsTuple>;
@@ -27,8 +30,36 @@ export type CommandExports = {
27
30
  isDefault?: boolean;
28
31
  options?: CommandOptions;
29
32
  };
33
+ /** Every command in the commands folder, the root's `index` among them, in file-name order. */
34
+ export type CommandManifest = CommandSpec[];
30
35
  export type CommandOption = ZodMaybeOptionalOrDefault<ZodArray<ZodEnum<Record<string, number | string>>>> | ZodMaybeOptionalOrDefault<ZodArray<ZodNumber>> | ZodMaybeOptionalOrDefault<ZodArray<ZodString>> | ZodMaybeOptionalOrDefault<ZodBoolean> | ZodMaybeOptionalOrDefault<ZodEnum<Record<string, number | string>>> | ZodMaybeOptionalOrDefault<ZodNumber> | ZodMaybeOptionalOrDefault<ZodSet<ZodEnum<Record<string, number | string>>>> | ZodMaybeOptionalOrDefault<ZodSet<ZodNumber>> | ZodMaybeOptionalOrDefault<ZodSet<ZodString>> | ZodMaybeOptionalOrDefault<ZodString>;
31
36
  export type CommandOptions = ZodMaybeOptional<ZodObject<Record<string, CommandOption>>>;
37
+ /**
38
+ * A command as plain data: what commander needs to parse it and print its help, without importing its module. `file`
39
+ * is the module (with its component) relative to the commands folder, with a `.js` extension; a folder without an
40
+ * `index` has none.
41
+ */
42
+ export type CommandSpec = {
43
+ alias?: string;
44
+ args?: ArgumentSpec[];
45
+ commands?: CommandSpec[];
46
+ description?: string;
47
+ file?: string;
48
+ isDefault: boolean;
49
+ name: string;
50
+ options?: OptionSpec[];
51
+ };
52
+ /** A commander option as plain data, described from a command's Zod `options` (`generate-options.ts`). */
53
+ export type OptionSpec = {
54
+ choices?: string[];
55
+ /** For `parse: 'set'`, the set's members. */
56
+ defaultValue?: unknown;
57
+ defaultValueDescription?: string;
58
+ description?: string;
59
+ flags: string;
60
+ /** `number`: parsed as a number; `set`: repeated values collected into a `Set`. */
61
+ parse?: 'number' | 'set';
62
+ };
32
63
  export type ZodMaybeOptional<T extends ZodTypeAny> = T | ZodOptional<T>;
33
64
  export type ZodMaybeOptionalOrDefault<T extends ZodTypeAny> = T | ZodDefault<T> | ZodDefault<ZodOptional<T>> | ZodOptional<T> | ZodOptional<ZodDefault<T>>;
34
65
  //# sourceMappingURL=internal-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/internal-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/internal-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,QAAQ,EACR,UAAU,EACX,MAAM,KAAK,CAAC;AAEb,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,yGAAyG;IACzG,KAAK,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/F,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,CAAC;AAExG,MAAM,MAAM,qBAAqB,GAC/B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAEjG,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAC1C;IAAC,yBAAyB,CAAC,eAAe,CAAC;IAAE,GAAG,KAAK,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC;CAAC,EAClG,eAAe,GAAG,IAAI,CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,+FAA+F;AAC/F,MAAM,MAAM,eAAe,GAAG,WAAW,EAAE,CAAC;AAE5C,MAAM,MAAM,aAAa,GACrB,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAC7E,yBAAyB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC9C,yBAAyB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAC9C,yBAAyB,CAAC,UAAU,CAAC,GACrC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GACnE,yBAAyB,CAAC,SAAS,CAAC,GACpC,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAC3E,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAC5C,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAC5C,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAExF;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB,CAAC;AAEF,0GAA0G;AAC1G,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,KAAK,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,UAAU,IACxD,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Pastel's build-time entry: describe a commands folder as the manifest `Pastel`'s `commands` option takes. It imports
3
+ * every command and Zod, which is why `index.ts` doesn't re-export it (ATK-605).
4
+ */
5
+ import readCommands from './read-commands.js';
6
+ export type { ArgumentSpec, CommandManifest, CommandSpec, OptionSpec } from './internal-types.js';
7
+ export { readCommands as describeCommands };
8
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAElG,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Pastel's build-time entry: describe a commands folder as the manifest `Pastel`'s `commands` option takes. It imports
3
+ * every command and Zod, which is why `index.ts` doesn't re-export it (ATK-605).
4
+ */
5
+ import readCommands from './read-commands.js';
6
+ export { readCommands as describeCommands };
7
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/lib/pastel/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAI9C,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,CAAC"}
@@ -1,4 +1,9 @@
1
- import type { Command } from './internal-types.js';
2
- declare const readCommands: (directory: string) => Promise<Map<string, Command>>;
1
+ import type { CommandManifest } from './internal-types.js';
2
+ /**
3
+ * Import every command in `directory` and describe it as plain data. Files are read in name order, so the manifest
4
+ * and the help list commands the same way on every file system. `prefix` is the folder's path from the commands
5
+ * folder, for `file`.
6
+ */
7
+ declare const readCommands: (directory: string, prefix?: string) => Promise<CommandManifest>;
3
8
  export default readCommands;
4
9
  //# sourceMappingURL=read-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-commands.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/read-commands.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,qBAAqB,CAAC;AAEnE,QAAA,MAAM,YAAY,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAsD3E,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"read-commands.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/read-commands.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAkB,eAAe,EAAe,MAAM,qBAAqB,CAAC;AAKxF;;;;GAIG;AACH,QAAA,MAAM,YAAY,GAAU,WAAW,MAAM,EAAE,eAAW,KAAG,OAAO,CAAC,eAAe,CA8DnF,CAAC;AAiBF,eAAe,YAAY,CAAC"}
@@ -10,9 +10,17 @@ import decamelize from 'decamelize';
10
10
  import fs from 'node:fs/promises';
11
11
  import path from 'node:path';
12
12
  import { pathToFileURL } from 'node:url';
13
- const readCommands = async (directory) => {
14
- const commands = new Map();
15
- const files = await fs.readdir(directory);
13
+ import { isDeepStrictEqual } from 'node:util';
14
+ import describeArguments from './generate-arguments.js';
15
+ import describeOptions from './generate-options.js';
16
+ /**
17
+ * Import every command in `directory` and describe it as plain data. Files are read in name order, so the manifest
18
+ * and the help list commands the same way on every file system. `prefix` is the folder's path from the commands
19
+ * folder, for `file`.
20
+ */
21
+ const readCommands = async (directory, prefix = '') => {
22
+ const commands = [];
23
+ const files = (await fs.readdir(directory)).sort();
16
24
  for (const file of files) {
17
25
  if (file.startsWith('_app')) {
18
26
  continue;
@@ -20,40 +28,53 @@ const readCommands = async (directory) => {
20
28
  const filePath = path.join(directory, file);
21
29
  const stat = await fs.stat(filePath);
22
30
  if (stat.isDirectory()) {
23
- const subCommands = await readCommands(filePath);
24
- const indexCommand = subCommands.get('index');
25
- if (indexCommand) {
26
- indexCommand.name = file;
27
- indexCommand.commands = subCommands;
28
- subCommands.delete('index');
29
- commands.set(file, indexCommand);
30
- continue;
31
- }
32
- const command = indexCommand ?? {
33
- commands: subCommands,
34
- isDefault: false,
35
- name: file,
36
- };
37
- commands.set(file, command);
31
+ const subCommands = await readCommands(filePath, `${prefix}${file}/`);
32
+ const indexCommand = subCommands.find((command) => command.name === 'index');
33
+ const others = subCommands.filter((command) => command !== indexCommand);
34
+ commands.push(indexCommand
35
+ ? { ...indexCommand, commands: others, name: file }
36
+ : { commands: others, isDefault: false, name: file });
38
37
  continue;
39
38
  }
40
39
  if (!/\.(js|ts)x?$/.test(file) || file.endsWith('.d.ts')) {
41
40
  continue;
42
41
  }
43
- const fileUrl = pathToFileURL(filePath);
44
- const m = (await import(__rewriteRelativeImportExtension(fileUrl.href)));
45
- const name = decamelize(file.replace(/\.(js|ts)x?$/, ''), { separator: '-' });
46
- commands.set(name, {
47
- alias: m.alias,
48
- args: m.args,
49
- component: m.default,
50
- description: m.description,
51
- isDefault: m.isDefault ?? false,
52
- name,
53
- options: m.options,
54
- });
42
+ const m = (await import(__rewriteRelativeImportExtension(pathToFileURL(filePath).href)));
43
+ const stem = file.replace(/\.(js|ts)x?$/, '');
44
+ const command = { isDefault: m.isDefault ?? false, name: decamelize(stem, { separator: '-' }) };
45
+ if (m.alias) {
46
+ command.alias = m.alias;
47
+ }
48
+ if (m.args) {
49
+ command.args = describeArguments(m.args);
50
+ }
51
+ if (m.description) {
52
+ command.description = m.description;
53
+ }
54
+ // The built module's name: under tsx, `.js` resolves to the `.ts(x)` source.
55
+ if (m.default) {
56
+ command.file = `${prefix}${stem}.js`;
57
+ }
58
+ if (m.options) {
59
+ command.options = describeOptions(m.options);
60
+ }
61
+ for (const spec of [...(command.args ?? []), ...(command.options ?? [])]) {
62
+ assertJsonDefault(spec, `${prefix}${file}`);
63
+ }
64
+ commands.push(command);
55
65
  }
56
66
  return commands;
57
67
  };
68
+ /**
69
+ * The manifest is JSON, written on a developer's machine, so a default must be a constant JSON keeps as it is: not
70
+ * `Infinity`, a `Date` or a function's result. A default that differs between machines (`process.cwd()`, a home
71
+ * path) passes here but fails the manifest test anywhere else.
72
+ */
73
+ function assertJsonDefault(spec, file) {
74
+ const { defaultValue } = spec;
75
+ if (defaultValue !== undefined && !isDeepStrictEqual(JSON.parse(JSON.stringify(defaultValue)), defaultValue)) {
76
+ throw new Error(`${file}: the default of ${spec.flags ?? spec.name} (${String(defaultValue)}) doesn't survive JSON, so the command manifest can't carry it.`);
77
+ }
78
+ }
58
79
  export default readCommands;
59
80
  //# sourceMappingURL=read-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read-commands.js","sourceRoot":"","sources":["../../../src/lib/pastel/read-commands.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,YAAY,GAAG,KAAK,EAAE,SAAiB,EAAiC,EAAE;IAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAE9C,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;gBACzB,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC;gBACpC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5B,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAY,YAAY,IAAI;gBACvC,QAAQ,EAAE,WAAW;gBACrB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,IAAI;aACX,CAAC;YAEF,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,kCAAC,OAAO,CAAC,IAAI,EAAC,CAAmB,CAAC;QACzD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAE9E,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;YACjB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,OAAO;YACpB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK;YAC/B,IAAI;YACJ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"read-commands.js","sourceRoot":"","sources":["../../../src/lib/pastel/read-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type Command as CommanderCommand } from 'commander';
2
+ import type { CommandExports } from './internal-types.js';
3
+ /**
4
+ * Run a command once commander has parsed it: check its options and arguments against the module's Zod schemas, then
5
+ * render its component in the app. `generate-command.tsx` imports this only when a command runs, so help and version
6
+ * output never load Ink, React or Zod (ATK-605).
7
+ */
8
+ export default function renderCommand(commanderCommand: CommanderCommand, module: CommandExports, { commandsDirectory, input, variadic }: {
9
+ commandsDirectory: string;
10
+ input: unknown[];
11
+ variadic: boolean;
12
+ }): Promise<void>;
13
+ //# sourceMappingURL=render-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-command.d.ts","sourceRoot":"","sources":["../../../src/lib/pastel/render-command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAK7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D;;;;GAIG;AACH,wBAA8B,aAAa,CACzC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,cAAc,EACtB,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,iBA6C3G"}
@@ -0,0 +1,56 @@
1
+ import {} from 'commander';
2
+ import { render } from 'ink';
3
+ import React from 'react';
4
+ import { fromZodError } from 'zod-validation-error';
5
+ import App from './_app.js';
6
+ import readCustomApp from './read-custom-app.js';
7
+ /**
8
+ * Run a command once commander has parsed it: check its options and arguments against the module's Zod schemas, then
9
+ * render its component in the app. `generate-command.tsx` imports this only when a command runs, so help and version
10
+ * output never load Ink, React or Zod (ATK-605).
11
+ */
12
+ export default async function renderCommand(commanderCommand, module, { commandsDirectory, input, variadic }) {
13
+ const Component = module.default;
14
+ // The manifest names a module only when it had a component.
15
+ if (!Component) {
16
+ throw new Error(`${commanderCommand.name()} has no default export: run \`pnpm manifest\` after changing it.`);
17
+ }
18
+ const options = input.pop();
19
+ let parsedOptions = {};
20
+ if (module.options) {
21
+ const result = module.options.safeParse(options);
22
+ if (result.success) {
23
+ parsedOptions = result.data ?? {};
24
+ }
25
+ else {
26
+ rejectInput(commanderCommand, result.error);
27
+ }
28
+ }
29
+ let arguments_ = [];
30
+ if (module.args) {
31
+ const result = module.args.safeParse(variadic ? input.flat() : input);
32
+ if (result.success) {
33
+ arguments_ = result.data ?? [];
34
+ }
35
+ else {
36
+ rejectInput(commanderCommand, result.error);
37
+ }
38
+ }
39
+ const appComponent = (await readCustomApp(commandsDirectory)) ?? App;
40
+ render(React.createElement(appComponent, {
41
+ commandProps: {
42
+ args: arguments_,
43
+ options: parsedOptions,
44
+ },
45
+ Component,
46
+ }));
47
+ }
48
+ /**
49
+ * Options or arguments the command's schema rejects are a usage error, reported through commander like its own
50
+ * (exit 2), so `Pastel`'s `onUsageError` sees them too.
51
+ */
52
+ function rejectInput(commanderCommand, error) {
53
+ const { message } = fromZodError(error, { maxIssuesInMessage: 1, prefix: '', prefixSeparator: '' });
54
+ commanderCommand.error(`error: ${message}`, { code: 'pastel.invalidInput', exitCode: 2 });
55
+ }
56
+ //# sourceMappingURL=render-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-command.js","sourceRoot":"","sources":["../../../src/lib/pastel/render-command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,aAAa,MAAM,sBAAsB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,aAAa,CACzC,gBAAkC,EAClC,MAAsB,EACtB,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAsE;IAE1G,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;IAEjC,4DAA4D;IAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,kEAAkE,CAAC,CAAC;IAChH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAA6B,CAAC;IACvD,IAAI,aAAa,GAA4B,EAAE,CAAC;IAEhD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,aAAa,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,IAAI,UAAU,GAAc,EAAE,CAAC;IAE/B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEtE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC,IAAI,GAAG,CAAC;IAErE,MAAM,CACJ,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE;QAChC,YAAY,EAAE;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,aAAa;SACvB;QACD,SAAS;KACV,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,gBAAkC,EAAE,KAAyC;IAChG,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;IACpG,gBAAgB,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Check whether a process with the given PID is still running.
3
+ * Uses `process.kill(pid, 0)` which sends no signal but throws if the
4
+ * process does not exist. Only `ESRCH` means it is gone: `EPERM` means it
5
+ * exists but belongs to another user, and any other error is read as running
6
+ * too, since a wrong "running" only waits for the holder to go stale while a
7
+ * wrong "gone" takes a live holder's lock or temp file. A PID no process can
8
+ * have (not a positive int32; 0 and negatives signal a process group) is gone.
9
+ */
10
+ export declare function isProcessAlive(pid: number): boolean;
11
+ //# sourceMappingURL=process-alive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-alive.d.ts","sourceRoot":"","sources":["../../src/lib/process-alive.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUnD"}