cli-forge 0.5.0 → 0.7.0

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.
package/bin/cli.js CHANGED
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const src_1 = require("../src");
5
5
  const generate_documentation_1 = require("./commands/generate-documentation");
6
6
  const init_1 = require("./commands/init");
7
- const mycli = (0, src_1.cli)('cli-forge').commands(generate_documentation_1.generateDocumentationCommand, init_1.initCommand);
7
+ const mycli = (0, src_1.cli)('cli-forge', {
8
+ description: "CLI tool for working with cli-forge based CLI's.",
9
+ }).commands(generate_documentation_1.generateDocumentationCommand, init_1.initCommand);
8
10
  exports.default = mycli;
9
11
  if (require.main === module) {
10
12
  (async () => {
package/bin/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../packages/cli-forge/bin/cli.ts"],"names":[],"mappings":";;;AAEA,gCAA6B;AAC7B,8EAAiF;AACjF,0CAA8C;AAE9C,MAAM,KAAK,GAAG,IAAA,SAAG,EAAC,WAAW,CAAC,CAAC,QAAQ,CACrC,qDAA4B,EAC5B,kBAAW,CACZ,CAAC;AAEF,kBAAe,KAAK,CAAC;AAErB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,CAAC,KAAK,IAAI,EAAE;QACV,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../packages/cli-forge/bin/cli.ts"],"names":[],"mappings":";;;AAEA,gCAA6B;AAC7B,8EAAiF;AACjF,0CAA8C;AAE9C,MAAM,KAAK,GAAG,IAAA,SAAG,EAAC,WAAW,EAAE;IAC7B,WAAW,EAAE,kDAAkD;CAChE,CAAC,CAAC,QAAQ,CAAC,qDAA4B,EAAE,kBAAW,CAAC,CAAC;AAEvD,kBAAe,KAAK,CAAC;AAErB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,CAAC,KAAK,IAAI,EAAE;QACV,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,EAAE,CAAC;AACP,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { ParsedArgs } from '@cli-forge/parser';
2
- import { CLI } from '../../src/lib/cli-forge';
2
+ import { CLI } from '../../src';
3
3
  export declare function withGenerateDocumentationArgs<T extends ParsedArgs>(cmd: CLI<T>): CLI<T & {
4
4
  cli: string;
5
5
  } & {
@@ -8,5 +8,7 @@ export declare function withGenerateDocumentationArgs<T extends ParsedArgs>(cmd:
8
8
  format: string;
9
9
  } & {
10
10
  export: string;
11
+ } & {
12
+ tsconfig: string;
11
13
  }>;
12
14
  export declare const generateDocumentationCommand: CLI;
@@ -9,6 +9,7 @@ const src_1 = require("../../src");
9
9
  const documentation_1 = require("../../src/lib/documentation");
10
10
  const cli_forge_1 = require("../../src/lib/cli-forge");
11
11
  const fs_1 = require("../utils/fs");
12
+ const node_url_1 = require("node:url");
12
13
  function withGenerateDocumentationArgs(cmd) {
13
14
  return cmd
14
15
  .positional('cli', {
@@ -31,20 +32,23 @@ function withGenerateDocumentationArgs(cmd) {
31
32
  .option('export', {
32
33
  type: 'string',
33
34
  description: 'The name of the export that contains the CLI instance. By default, docs will be generated for the default export.',
35
+ })
36
+ .option('tsconfig', {
37
+ type: 'string',
38
+ description: 'Specifies the `tsconfig` used when loading typescript based CLIs.',
34
39
  });
35
40
  }
36
41
  exports.generateDocumentationCommand = (0, src_1.default)('generate-documentation', {
37
42
  description: 'Generate documentation for the given CLI',
43
+ examples: [
44
+ 'cli-forge generate-documentation ./bin/my-cli',
45
+ 'cli-forge generate-documentation ./bin/my-cli --format json',
46
+ 'cli-forge generate-documentation ./bin/my-cli --export mycli',
47
+ ],
38
48
  builder: (b) => withGenerateDocumentationArgs(b),
39
49
  handler: async (args) => {
40
- if (args.cli.startsWith('./') || args.cli.startsWith('../')) {
41
- args.cli = (0, node_path_1.join)(process.cwd(), args.cli);
42
- }
43
- const cliModule = await Promise.resolve(`${args.cli}`).then(s => require(s));
44
- const cli = cliModule[args.export || 'default'] ?? cliModule;
45
- if (!isCLI(cli)) {
46
- throw new Error(`${args.cli}${args.export ? '#' + args.export : ''} is not a CLI.`);
47
- }
50
+ const cliModule = await loadCLIModule(args);
51
+ const cli = readCLIFromModule(cliModule, args);
48
52
  const documentation = (0, documentation_1.generateDocumentation)(cli);
49
53
  if (args.format === 'md') {
50
54
  await generateMarkdownDocumentation(documentation, args);
@@ -72,9 +76,11 @@ async function generateMarkdownForSingleCommand(docs, out, docsRoot, md) {
72
76
  [md.bold('Usage:'), md.code(docs.usage)].join(' '),
73
77
  docs.description,
74
78
  getPositionalArgsFragment(docs.positionals, md),
75
- getFlagArgsFragment(docs.options, md),
79
+ getFlagArgsFragment(docs.options, 'Flags', md),
80
+ ...docs.groupedOptions.map((group) => getFlagArgsFragment(Object.fromEntries(group.keys.map((key) => [key.key, key])), group.label, md)),
76
81
  getSubcommandsFragment(docs.subcommands, outdir, docsRoot, md),
77
82
  getExamplesFragment(docs.examples, md),
83
+ getEpilogueFragment(docs.epilogue, md),
78
84
  ].filter(isTruthy)));
79
85
  for (const subcommand of docs.subcommands) {
80
86
  await generateMarkdownForSingleCommand(subcommand, (0, node_path_1.join)(outdir, subcommand.name), docsRoot, md);
@@ -113,11 +119,11 @@ function getPositionalArgsFragment(positionals, md) {
113
119
  }
114
120
  return md.h2('Positional Arguments', ...positionals.map((positional) => formatOption(positional, md)));
115
121
  }
116
- function getFlagArgsFragment(options, md) {
122
+ function getFlagArgsFragment(options, label, md) {
117
123
  if (Object.keys(options).length === 0) {
118
124
  return undefined;
119
125
  }
120
- return md.h2('Flags', ...Object.values(options).map((option) => formatOption(option, md)));
126
+ return md.h2(label, ...Object.values(options).map((option) => formatOption(option, md)));
121
127
  }
122
128
  function getSubcommandsFragment(subcommands, outdir, docsRoot, md) {
123
129
  if (subcommands.length === 0) {
@@ -158,4 +164,82 @@ function getExamplesFragment(examples, md) {
158
164
  }
159
165
  return md.h2('Examples', ...examples.map((example) => md.codeBlock(example, 'shell')));
160
166
  }
167
+ /**
168
+ * Reads the CLI instance from the provided module. For some reason,
169
+ * when importing a module that uses `export default` in typescript
170
+ * the default export is nested under a `default` property on the module...
171
+ * We for code that looks like `export default 5`, on import we get back
172
+ * `{ default: {default: 5}}`. To work around this, and make things work
173
+ * we try to read the CLI instance from the module in a few different ways.
174
+ *
175
+ * @param cliModule The imported module
176
+ * @param exportSpecifier The name of the export to read the CLI from. Defaults to `default`.
177
+ * @returns A CLI instance.
178
+ */
179
+ function readCLIFromModule(cliModule, args) {
180
+ let cli = cliModule;
181
+ if (args.export) {
182
+ cli = cliModule[args.export] ?? cliModule['default']?.[args.export];
183
+ }
184
+ else {
185
+ cli =
186
+ cliModule['default']?.['default'] ?? cliModule['default'] ?? cliModule;
187
+ }
188
+ if (!isCLI(cli)) {
189
+ throw new Error(`${args.cli}${args.export ? '#' + args.export : ''} is not a CLI.`);
190
+ }
191
+ return cli;
192
+ }
193
+ async function loadCLIModule(args) {
194
+ if (!(0, node_path_1.isAbsolute)(args.cli)) {
195
+ args.cli = (0, node_path_1.join)(process.cwd(), args.cli);
196
+ }
197
+ const cliPath = [
198
+ args.cli,
199
+ `${args.cli}.ts`,
200
+ `${args.cli}.js`,
201
+ `${args.cli}.cjs`,
202
+ `${args.cli}.mjs`,
203
+ (0, node_path_1.join)(args.cli, 'index.ts'),
204
+ (0, node_path_1.join)(args.cli, 'index.js'),
205
+ (0, node_path_1.join)(args.cli, 'index.cjs'),
206
+ (0, node_path_1.join)(args.cli, 'index.mjs'),
207
+ ].find((f) => (0, node_fs_1.existsSync)(f));
208
+ if (!cliPath) {
209
+ throw new Error(`Could not find CLI module at ${args.cli}
210
+
211
+ Ensure that the path is correct and that the CLI module exists.`);
212
+ }
213
+ try {
214
+ const tsx = (await Promise.resolve().then(() => require(
215
+ // For some reason the typescript language server doesn't like the import statement below.
216
+ // Its accurate, and in fact the full path with `/dist/` would error as its not part of
217
+ // the package.json's `exports` field.
218
+ //
219
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
220
+ //@ts-expect-error
221
+ 'tsx/esm/api')));
222
+ return tsx.tsImport(cliPath, {
223
+ tsconfig: args.tsconfig,
224
+ parentURL: (0, node_url_1.pathToFileURL)(__dirname).toString(),
225
+ });
226
+ }
227
+ catch {
228
+ try {
229
+ return await Promise.resolve(`${cliPath}`).then(s => require(s));
230
+ }
231
+ catch (e) {
232
+ if (cliPath.endsWith('.ts')) {
233
+ console.warn('[cli-forge]: Generating docs for a typescript CLI requires installing `tsx` as a dev dependency, targeting the build artifacts instead, or otherwise registering a typescript loader with node.');
234
+ }
235
+ throw e;
236
+ }
237
+ }
238
+ }
239
+ function getEpilogueFragment(epilogue, md) {
240
+ if (!epilogue) {
241
+ return undefined;
242
+ }
243
+ return md.blockQuote(epilogue);
244
+ }
161
245
  //# sourceMappingURL=generate-documentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-documentation.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/bin/commands/generate-documentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-documentation.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/bin/commands/generate-documentation.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export declare function withInitArgs<T extends ParsedArgs>(cmd: CLI<T>): CLI<T &
6
6
  output: string;
7
7
  } & {
8
8
  format: string;
9
+ } & {
10
+ initialVersion: string;
9
11
  }>;
10
12
  export declare const initCommand: CLI<{
11
13
  unmatched: string[];
@@ -16,4 +18,6 @@ export declare const initCommand: CLI<{
16
18
  output: string;
17
19
  } & {
18
20
  format: string;
21
+ } & {
22
+ initialVersion: string;
19
23
  }>;
@@ -5,10 +5,22 @@ exports.withInitArgs = withInitArgs;
5
5
  const node_child_process_1 = require("node:child_process");
6
6
  const node_fs_1 = require("node:fs");
7
7
  const node_path_1 = require("node:path");
8
- const package_json_1 = require("../../package.json");
8
+ const CLI_FORGE_PACKAGE_JSON = require("../../package.json");
9
9
  const src_1 = require("../../src");
10
10
  // import { CLI } from '../../src/lib/cli-forge';
11
11
  const fs_1 = require("../utils/fs");
12
+ const CLI_FORGE_VERSION = CLI_FORGE_PACKAGE_JSON.version;
13
+ const DEV_PEER_DEPS = Object.entries(CLI_FORGE_PACKAGE_JSON.peerDependencies).reduce((acc, [dep, version]) => {
14
+ if (
15
+ // The dev prop doesn't actually do anything for npm/pnpm/yarn,
16
+ // but we are using it to mark when a peer dep is only used at dev time.
17
+ // In these cases, we can safely add them to the devDependencies of the
18
+ // generated CLI.
19
+ CLI_FORGE_PACKAGE_JSON.peerDependenciesMeta[dep]?.dev) {
20
+ acc[dep] = version;
21
+ }
22
+ return acc;
23
+ }, {});
12
24
  function withInitArgs(cmd) {
13
25
  return cmd
14
26
  .positional('cliName', {
@@ -26,21 +38,43 @@ function withInitArgs(cmd) {
26
38
  default: 'ts',
27
39
  description: 'What format should the CLI be in?',
28
40
  choices: ['js', 'ts'],
41
+ })
42
+ .option('initialVersion', {
43
+ type: 'string',
44
+ default: '0.0.1',
45
+ description: 'Initial version used when creating the package.json for the new CLI.',
29
46
  });
30
47
  }
31
48
  exports.initCommand = (0, src_1.default)('init', {
32
49
  description: 'Generate a new CLI',
50
+ examples: [
51
+ 'cli-forge init {mycli}',
52
+ 'cli-forge init {mycli} --format js',
53
+ 'cli-forge init {mycli} --output packages/{mycli}',
54
+ 'cli-forge init {mycli} --initial-version 1.0.0',
55
+ ],
33
56
  builder: (b) => withInitArgs(b),
34
57
  handler: async (args) => {
35
58
  args.output ??= process.cwd();
36
59
  (0, fs_1.ensureDirSync)(args.output);
37
60
  const packageJsonPath = (0, node_path_1.join)(args.output, 'package.json');
38
61
  const cliPath = (0, node_path_1.join)(args.output, 'bin', `${args.cliName}.${args.format}`);
39
- const packageJsonContent = readJsonOr(packageJsonPath, { name: args.cliName });
62
+ const packageJsonContent = readJsonOr(packageJsonPath, {
63
+ name: args.cliName,
64
+ version: args.initialVersion,
65
+ });
40
66
  packageJsonContent.bin ??= {};
41
67
  packageJsonContent.bin[args.cliName] = (0, node_path_1.relative)(args.output, cliPath);
42
68
  packageJsonContent.dependencies ??= {};
43
- packageJsonContent.dependencies['cli-forge'] ??= package_json_1.version;
69
+ packageJsonContent.dependencies['cli-forge'] ??= CLI_FORGE_VERSION;
70
+ if (args.format === 'ts') {
71
+ const latestTypescriptVersion = (0, node_child_process_1.execSync)('npm show typescript version').toString();
72
+ packageJsonContent.devDependencies = {
73
+ typescript: latestTypescriptVersion,
74
+ ...DEV_PEER_DEPS,
75
+ ...packageJsonContent.devDependencies,
76
+ };
77
+ }
44
78
  (0, node_fs_1.writeFileSync)(packageJsonPath, JSON.stringify(packageJsonContent, null, 2));
45
79
  (0, fs_1.ensureDirSync)((0, node_path_1.dirname)(cliPath));
46
80
  (0, node_fs_1.writeFileSync)(cliPath, args.format === 'ts'
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/bin/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/bin/commands/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,22 @@
1
1
  {
2
2
  "name": "cli-forge",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0",
6
- "@cli-forge/parser": "0.5.0"
6
+ "@cli-forge/parser": "0.7.0"
7
7
  },
8
8
  "peerDependencies": {
9
- "markdown-factory": "0.2.0"
9
+ "markdown-factory": "0.2.0",
10
+ "tsx": "4.19.0"
10
11
  },
11
12
  "peerDependenciesMeta": {
12
13
  "markdown-factory": {
13
- "optional": true
14
+ "optional": true,
15
+ "dev": true
16
+ },
17
+ "tsx": {
18
+ "optional": true,
19
+ "dev": true
14
20
  }
15
21
  },
16
22
  "type": "commonjs",
package/src/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export { default, cli, CLI, Command } from './lib/cli-forge';
2
1
  export { TestHarness } from './lib/test-harness';
2
+ export * from './lib/public-api';
3
+ export { default } from './lib/public-api';
package/src/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TestHarness = exports.cli = exports.default = void 0;
4
- var cli_forge_1 = require("./lib/cli-forge");
5
- Object.defineProperty(exports, "default", { enumerable: true, get: function () { return cli_forge_1.default; } });
6
- Object.defineProperty(exports, "cli", { enumerable: true, get: function () { return cli_forge_1.cli; } });
3
+ exports.default = exports.TestHarness = void 0;
4
+ const tslib_1 = require("tslib");
7
5
  var test_harness_1 = require("./lib/test-harness");
8
6
  Object.defineProperty(exports, "TestHarness", { enumerable: true, get: function () { return test_harness_1.TestHarness; } });
7
+ tslib_1.__exportStar(require("./lib/public-api"), exports);
8
+ var public_api_1 = require("./lib/public-api");
9
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return public_api_1.default; } });
9
10
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/cli-forge/src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA6D;AAApD,oGAAA,OAAO,OAAA;AAAE,gGAAA,GAAG,OAAA;AACrB,mDAAiD;AAAxC,2GAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/cli-forge/src/index.ts"],"names":[],"mappings":";;;;AAAA,mDAAiD;AAAxC,2GAAA,WAAW,OAAA;AACpB,2DAAiC;AACjC,+CAA2C;AAAlC,qGAAA,OAAO,OAAA"}
@@ -1,129 +1,5 @@
1
- import { ArrayOptionConfig, OptionConfig, ParsedArgs } from '@cli-forge/parser';
2
- export interface CLIHandlerContext {
3
- command: CLI<any>;
4
- }
5
- export type CLICommandOptions<TInitial extends ParsedArgs, TArgs extends TInitial = TInitial> = {
6
- description?: string;
7
- builder?: (parser: CLI<TInitial>) => CLI<TArgs>;
8
- handler?: (args: TArgs, context: CLIHandlerContext) => void | Promise<void>;
9
- usage?: string;
10
- examples?: string[];
11
- };
12
- export type Command<TInitial extends ParsedArgs = any, TArgs extends TInitial = TInitial> = ({
13
- name: string;
14
- } & CLICommandOptions<TInitial, TArgs>) | CLI<TArgs>;
15
- /**
16
- * The interface for a CLI application or subcommands.
17
- *
18
- * {@link cli} is provided as a small helper function to create a new CLI instance.
19
- *
20
- * @example
21
- * ```ts
22
- * import { cli } from 'cli-forge';
23
- *
24
- * cli('basic-cli').command('hello', {
25
- * builder: (args) =>
26
- * args.option('name', {
27
- * type: 'string',
28
- * }),
29
- * handler: (args) => {
30
- * console.log(`Hello, ${args.name}!`);
31
- * }).forge();
32
- * ```
33
- */
34
- export interface CLI<TArgs extends ParsedArgs = ParsedArgs> {
35
- command<TCommandArgs extends TArgs>(cmd: Command<TArgs, TCommandArgs>): CLI<TArgs>;
36
- /**
37
- * Registers a new command with the CLI.
38
- * @param key What should the new command be called?
39
- * @param options Settings for the new command. See {@link CLICommandOptions}.
40
- * @returns Updated CLI instance with the new command registered.
41
- */
42
- command<TCommandArgs extends TArgs>(key: string, options: CLICommandOptions<TArgs, TCommandArgs>): CLI<TArgs>;
43
- /**
44
- * Registers multiple subcommands with the CLI.
45
- * @param commands Several commands to register. Can be the result of a call to {@link cli} or a configuration object.
46
- */
47
- commands(commands: Command[]): CLI<TArgs>;
48
- /**
49
- * Registers multiple subcommands with the CLI.
50
- * @param commands Several commands to register. Can be the result of a call to {@link cli} or a configuration object.
51
- */
52
- commands(...commands: Command[]): CLI<TArgs>;
53
- /**
54
- * Registers a new option for the CLI command. This option will be accessible
55
- * within the command handler, as well as any subcommands.
56
- *
57
- * @param name The name of the option.
58
- * @param config Configuration for the option. See {@link OptionConfig}.
59
- * @returns Updated CLI instance with the new option registered.
60
- */
61
- option<TOption extends string, TOptionConfig extends OptionConfig>(name: TOption, config: TOptionConfig): CLI<TArgs & {
62
- [key in TOption]: TOptionConfig['coerce'] extends (value: string) => infer TCoerce ? TCoerce : {
63
- string: string;
64
- number: number;
65
- boolean: boolean;
66
- array: (TOptionConfig extends ArrayOptionConfig<string | number> ? TOptionConfig['items'] extends 'string' ? string : number : never)[];
67
- }[TOptionConfig['type']];
68
- }>;
69
- /**
70
- * Registers a new positional argument for the CLI command. This argument will be accessible
71
- * within the command handler, as well as any subcommands.
72
- * @param name The name of the positional argument.
73
- * @param config Configuration for the positional argument. See {@link OptionConfig}.
74
- * @returns Updated CLI instance with the new positional argument registered.
75
- */
76
- positional<TOption extends string, TOptionConfig extends OptionConfig>(name: TOption, config: TOptionConfig): CLI<TArgs & {
77
- [key in TOption]: TOptionConfig['coerce'] extends (value: string) => infer TCoerce ? TCoerce : {
78
- string: string;
79
- number: number;
80
- boolean: boolean;
81
- array: (TOptionConfig extends ArrayOptionConfig<string | number> ? TOptionConfig['items'] extends 'string' ? string : number : never)[];
82
- }[TOptionConfig['type']];
83
- }>;
84
- /**
85
- * Adds support for reading CLI options from environment variables.
86
- * @param prefix The prefix to use when looking up environment variables. Defaults to the command name.
87
- */
88
- env(prefix?: string): CLI<TArgs>;
89
- /**
90
- * Sets a group of options as mutually exclusive. If more than one option is provided, there will be a validation error.
91
- * @param options The options that should be mutually exclusive.
92
- */
93
- conflicts(...options: [string, string, ...string[]]): CLI<TArgs>;
94
- /**
95
- * Sets a group of options as mutually inclusive. If one option is provided, all other options must also be provided.
96
- * @param option The option that implies the other options.
97
- * @param impliedOptions The options which become required when the option is provided.
98
- */
99
- implies(option: string, ...impliedOptions: string[]): CLI<TArgs>;
100
- /**
101
- * Requires a command to be provided when executing the CLI. Useful if your parent command
102
- * cannot be executed on its own.
103
- * @returns Updated CLI instance.
104
- */
105
- demandCommand(): CLI<TArgs>;
106
- /**
107
- * Sets the usage text for the CLI. This text will be displayed in place of the default usage text
108
- * @param usageText Text displayed in place of the default usage text for `--help` and in generated docs.
109
- */
110
- usage(usageText: string): CLI<TArgs>;
111
- /**
112
- * Sets the description for the CLI. This text will be displayed in the help text and generated docs.
113
- * @param examples Examples to display in the help text and generated docs.
114
- */
115
- examples(...examples: string[]): CLI<TArgs>;
116
- /**
117
- * Prints help text to stdout.
118
- */
119
- printHelp(): void;
120
- /**
121
- * Parses argv and executes the CLI
122
- * @param args argv. Defaults to process.argv.slice(2)
123
- * @returns Promise that resolves when the handler completes.
124
- */
125
- forge(args?: string[]): Promise<TArgs>;
126
- }
1
+ import { InternalOptionConfig, OptionConfig, ParsedArgs } from '@cli-forge/parser';
2
+ import { CLI, CLICommandOptions, Command, ErrorHandler } from './public-api';
127
3
  /**
128
4
  * The base class for a CLI application. This class is used to define the structure of the CLI.
129
5
  *
@@ -155,6 +31,20 @@ export declare class InternalCLI<TArgs extends ParsedArgs = ParsedArgs> implemen
155
31
  commandChain: string[];
156
32
  private requiresCommand;
157
33
  private _configuration?;
34
+ private _versionOverride?;
35
+ private registeredErrorHandlers;
36
+ private registeredMiddleware;
37
+ /**
38
+ * A list of option groups that have been registered with the CLI. Grouped Options are displayed together in the help text.
39
+ *
40
+ * For internal use only. Stick to properties available on {@link CLI}.
41
+ */
42
+ private registeredOptionGroups;
43
+ getGroupedOptions(): {
44
+ label: string;
45
+ sortOrder: number;
46
+ keys: Array<InternalOptionConfig>;
47
+ }[];
158
48
  get configuration(): CLICommandOptions<any, any> | undefined;
159
49
  private set configuration(value);
160
50
  private parser;
@@ -162,7 +52,7 @@ export declare class InternalCLI<TArgs extends ParsedArgs = ParsedArgs> implemen
162
52
  * @param name What should the name of the cli command be?
163
53
  * @param configuration Configuration for the current CLI command.
164
54
  */
165
- constructor(name: string);
55
+ constructor(name: string, rootCommandConfiguration?: CLICommandOptions<TArgs>);
166
56
  withRootCommandConfiguration<TRootCommandArgs extends TArgs>(configuration: CLICommandOptions<TArgs, TRootCommandArgs>): InternalCLI<TArgs>;
167
57
  command<TCommandArgs extends TArgs>(cmd: Command<TArgs, TCommandArgs>): CLI<TArgs>;
168
58
  command<TCommandArgs extends TArgs>(key: string, options: CLICommandOptions<TArgs, TCommandArgs>): CLI<TArgs>;
@@ -176,6 +66,7 @@ export declare class InternalCLI<TArgs extends ParsedArgs = ParsedArgs> implemen
176
66
  demandCommand(): this;
177
67
  usage(usageText: string): this;
178
68
  examples(...examples: string[]): this;
69
+ version(version?: string): this;
179
70
  /**
180
71
  * Gets help text for the current command as a string.
181
72
  * @returns Help text for the current command.
@@ -185,29 +76,34 @@ export declare class InternalCLI<TArgs extends ParsedArgs = ParsedArgs> implemen
185
76
  * Prints help text for the current command to the console.
186
77
  */
187
78
  printHelp(): void;
79
+ middleware(callback: (args: TArgs) => void): CLI<TArgs>;
188
80
  /**
189
81
  * Runs the current command.
190
82
  * @param cmd The command to run.
191
83
  * @param args The arguments to pass to the command.
192
84
  */
193
- runCommand<T extends ParsedArgs>(cmd: InternalCLI<T>, args: T): Promise<void>;
85
+ runCommand<T extends ParsedArgs>(args: T, originalArgV: string[]): Promise<void>;
86
+ enableInteractiveShell(): this;
87
+ private versionHandler;
88
+ private withErrorHandlers;
89
+ errorHandler(handler: ErrorHandler): this;
90
+ group(configObject: {
91
+ label: string;
92
+ keys: (keyof TArgs)[];
93
+ sortOrder: number;
94
+ }): CLI<TArgs>;
95
+ group(label: string, keys: (keyof TArgs)[]): CLI<TArgs>;
194
96
  /**
195
97
  * Parses argv and executes the CLI
196
98
  * @param args argv. Defaults to process.argv.slice(2)
197
99
  * @returns Promise that resolves when the handler completes.
198
100
  */
199
- forge(args?: string[]): Promise<TArgs>;
101
+ forge: (args?: string[]) => Promise<Awaited<TArgs>>;
200
102
  getParser(): import("@cli-forge/parser").ReadonlyArgvParser<TArgs & {
201
103
  help: boolean;
104
+ } & {
105
+ version: boolean;
202
106
  }>;
203
107
  getSubcommands(): Readonly<Record<string, InternalCLI>>;
204
108
  clone(): InternalCLI<TArgs>;
205
109
  }
206
- /**
207
- * Constructs a CLI instance. See {@link InternalCLI} for more information.
208
- * @param name Name for the top level CLI
209
- * @param rootCommandConfiguration Configuration used when running the bare CLI. e.g. npx my-cli, rather than npx my-cli [cmd]
210
- * @returns A {@link InternalCLI} instance.
211
- */
212
- export declare function cli<TArgs extends ParsedArgs>(name: string, rootCommandConfiguration?: CLICommandOptions<ParsedArgs, TArgs>): CLI<TArgs>;
213
- export default cli;