cli-forge 0.5.0 → 0.6.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/commands/generate-documentation.d.ts +2 -0
- package/bin/commands/generate-documentation.js +74 -8
- package/bin/commands/generate-documentation.js.map +1 -1
- package/bin/commands/init.d.ts +4 -0
- package/bin/commands/init.js +31 -3
- package/bin/commands/init.js.map +1 -1
- package/package.json +10 -4
- package/src/lib/cli-forge.d.ts +46 -3
- package/src/lib/cli-forge.js +138 -35
- package/src/lib/cli-forge.js.map +1 -1
- package/src/lib/documentation.d.ts +2 -13
- package/src/lib/documentation.js +3 -0
- package/src/lib/documentation.js.map +1 -1
- package/src/lib/interactive-shell.d.ts +13 -0
- package/src/lib/interactive-shell.js +85 -0
- package/src/lib/interactive-shell.js.map +1 -0
- package/src/lib/utils.d.ts +10 -0
- package/src/lib/utils.js +110 -0
- package/src/lib/utils.js.map +1 -0
|
@@ -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,18 @@ 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',
|
|
38
43
|
builder: (b) => withGenerateDocumentationArgs(b),
|
|
39
44
|
handler: async (args) => {
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
}
|
|
45
|
+
const cliModule = await loadCLIModule(args);
|
|
46
|
+
let cli = readCLIFromModule(cliModule, args);
|
|
48
47
|
const documentation = (0, documentation_1.generateDocumentation)(cli);
|
|
49
48
|
if (args.format === 'md') {
|
|
50
49
|
await generateMarkdownDocumentation(documentation, args);
|
|
@@ -158,4 +157,71 @@ function getExamplesFragment(examples, md) {
|
|
|
158
157
|
}
|
|
159
158
|
return md.h2('Examples', ...examples.map((example) => md.codeBlock(example, 'shell')));
|
|
160
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Reads the CLI instance from the provided module. For some reason,
|
|
162
|
+
* when importing a module that uses `export default` in typescript
|
|
163
|
+
* the default export is nested under a `default` property on the module...
|
|
164
|
+
* We for code that looks like `export default 5`, on import we get back
|
|
165
|
+
* `{ default: {default: 5}}`. To work around this, and make things work
|
|
166
|
+
* we try to read the CLI instance from the module in a few different ways.
|
|
167
|
+
*
|
|
168
|
+
* @param cliModule The imported module
|
|
169
|
+
* @param exportSpecifier The name of the export to read the CLI from. Defaults to `default`.
|
|
170
|
+
* @returns A CLI instance.
|
|
171
|
+
*/
|
|
172
|
+
function readCLIFromModule(cliModule, args) {
|
|
173
|
+
let cli = cliModule;
|
|
174
|
+
if (args.export) {
|
|
175
|
+
cli = cliModule[args.export] ?? cliModule['default']?.[args.export];
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
cli =
|
|
179
|
+
cliModule['default']?.['default'] ?? cliModule['default'] ?? cliModule;
|
|
180
|
+
}
|
|
181
|
+
if (!isCLI(cli)) {
|
|
182
|
+
throw new Error(`${args.cli}${args.export ? '#' + args.export : ''} is not a CLI.`);
|
|
183
|
+
}
|
|
184
|
+
return cli;
|
|
185
|
+
}
|
|
186
|
+
async function loadCLIModule(args) {
|
|
187
|
+
if (!(0, node_path_1.isAbsolute)(args.cli)) {
|
|
188
|
+
args.cli = (0, node_path_1.join)(process.cwd(), args.cli);
|
|
189
|
+
}
|
|
190
|
+
const cliPath = [
|
|
191
|
+
args.cli,
|
|
192
|
+
`${args.cli}.ts`,
|
|
193
|
+
`${args.cli}.js`,
|
|
194
|
+
`${args.cli}.cjs`,
|
|
195
|
+
`${args.cli}.mjs`,
|
|
196
|
+
(0, node_path_1.join)(args.cli, 'index.ts'),
|
|
197
|
+
(0, node_path_1.join)(args.cli, 'index.js'),
|
|
198
|
+
(0, node_path_1.join)(args.cli, 'index.cjs'),
|
|
199
|
+
(0, node_path_1.join)(args.cli, 'index.mjs'),
|
|
200
|
+
].find((f) => (0, node_fs_1.existsSync)(f));
|
|
201
|
+
if (!cliPath) {
|
|
202
|
+
throw new Error(`Could not find CLI module at ${args.cli}
|
|
203
|
+
|
|
204
|
+
Ensure that the path is correct and that the CLI module exists.`);
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
const tsx = (await Promise.resolve().then(() => require(
|
|
208
|
+
//@ts-ignore
|
|
209
|
+
'tsx/esm/api')));
|
|
210
|
+
return tsx.tsImport(cliPath, {
|
|
211
|
+
tsconfig: args.tsconfig,
|
|
212
|
+
parentURL: (0, node_url_1.pathToFileURL)(__dirname).toString(),
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
try {
|
|
217
|
+
return await Promise.resolve(`${cliPath}`).then(s => require(s));
|
|
218
|
+
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
if (cliPath.endsWith('.ts')) {
|
|
221
|
+
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.');
|
|
222
|
+
}
|
|
223
|
+
throw e;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
161
227
|
//# 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":";;;
|
|
1
|
+
{"version":3,"file":"generate-documentation.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/bin/commands/generate-documentation.ts"],"names":[],"mappings":"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"}
|
package/bin/commands/init.d.ts
CHANGED
|
@@ -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
|
}>;
|
package/bin/commands/init.js
CHANGED
|
@@ -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
|
|
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,6 +38,11 @@ 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', {
|
|
@@ -36,11 +53,22 @@ exports.initCommand = (0, src_1.default)('init', {
|
|
|
36
53
|
(0, fs_1.ensureDirSync)(args.output);
|
|
37
54
|
const packageJsonPath = (0, node_path_1.join)(args.output, 'package.json');
|
|
38
55
|
const cliPath = (0, node_path_1.join)(args.output, 'bin', `${args.cliName}.${args.format}`);
|
|
39
|
-
const packageJsonContent = readJsonOr(packageJsonPath, {
|
|
56
|
+
const packageJsonContent = readJsonOr(packageJsonPath, {
|
|
57
|
+
name: args.cliName,
|
|
58
|
+
version: args.initialVersion,
|
|
59
|
+
});
|
|
40
60
|
packageJsonContent.bin ??= {};
|
|
41
61
|
packageJsonContent.bin[args.cliName] = (0, node_path_1.relative)(args.output, cliPath);
|
|
42
62
|
packageJsonContent.dependencies ??= {};
|
|
43
|
-
packageJsonContent.dependencies['cli-forge'] ??=
|
|
63
|
+
packageJsonContent.dependencies['cli-forge'] ??= CLI_FORGE_VERSION;
|
|
64
|
+
if (args.format === 'ts') {
|
|
65
|
+
const latestTypescriptVersion = (0, node_child_process_1.execSync)('npm show typescript version').toString();
|
|
66
|
+
packageJsonContent.devDependencies = {
|
|
67
|
+
typescript: latestTypescriptVersion,
|
|
68
|
+
...DEV_PEER_DEPS,
|
|
69
|
+
...packageJsonContent.devDependencies,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
44
72
|
(0, node_fs_1.writeFileSync)(packageJsonPath, JSON.stringify(packageJsonContent, null, 2));
|
|
45
73
|
(0, fs_1.ensureDirSync)((0, node_path_1.dirname)(cliPath));
|
|
46
74
|
(0, node_fs_1.writeFileSync)(cliPath, args.format === 'ts'
|
package/bin/commands/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/bin/commands/init.ts"],"names":[],"mappings":";;;
|
|
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.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.0",
|
|
6
|
-
"@cli-forge/parser": "0.
|
|
6
|
+
"@cli-forge/parser": "0.6.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/lib/cli-forge.d.ts
CHANGED
|
@@ -12,6 +12,19 @@ export type CLICommandOptions<TInitial extends ParsedArgs, TArgs extends TInitia
|
|
|
12
12
|
export type Command<TInitial extends ParsedArgs = any, TArgs extends TInitial = TInitial> = ({
|
|
13
13
|
name: string;
|
|
14
14
|
} & CLICommandOptions<TInitial, TArgs>) | CLI<TArgs>;
|
|
15
|
+
/**
|
|
16
|
+
* Error Handler for CLI applications. Error handlers should re-throw the error if they cannot handle it.
|
|
17
|
+
*
|
|
18
|
+
* @param e The error that was thrown.
|
|
19
|
+
* @param actions Actions that can be taken by the error handler. Prefer using these over process.exit for better support of interactive shells.
|
|
20
|
+
*/
|
|
21
|
+
export type ErrorHandler = (e: unknown, actions: {
|
|
22
|
+
/**
|
|
23
|
+
* Exits the process immediately.
|
|
24
|
+
* @param code
|
|
25
|
+
*/
|
|
26
|
+
exit: (code?: number) => void;
|
|
27
|
+
}) => void;
|
|
15
28
|
/**
|
|
16
29
|
* The interface for a CLI application or subcommands.
|
|
17
30
|
*
|
|
@@ -50,6 +63,21 @@ export interface CLI<TArgs extends ParsedArgs = ParsedArgs> {
|
|
|
50
63
|
* @param commands Several commands to register. Can be the result of a call to {@link cli} or a configuration object.
|
|
51
64
|
*/
|
|
52
65
|
commands(...commands: Command[]): CLI<TArgs>;
|
|
66
|
+
/**
|
|
67
|
+
* Enables the ability to run CLI commands that contain subcommands as an interactive shell.
|
|
68
|
+
* This presents as a small shell that only knows the current command and its subcommands.
|
|
69
|
+
* Any flags already consumed by the command will be passed to every subcommand invocation.
|
|
70
|
+
*/
|
|
71
|
+
enableInteractiveShell(): CLI<TArgs>;
|
|
72
|
+
/**
|
|
73
|
+
* Registers a custom global error handler for the CLI. This handler will be called when an error is thrown
|
|
74
|
+
* during the execution of the CLI and not otherwise handled. Error handlers should re-throw the error if they
|
|
75
|
+
* cannot handle it, s.t. the next error handler can attempt to handle it.
|
|
76
|
+
*
|
|
77
|
+
* @param handler Typically called with an Error object, but you should be prepared to handle any type of error.
|
|
78
|
+
* @param actions Actions that can be taken by the error handler. Prefer using these over process.exit for better support of interactive shells.
|
|
79
|
+
*/
|
|
80
|
+
errorHandler(handler: ErrorHandler): CLI<TArgs>;
|
|
53
81
|
/**
|
|
54
82
|
* Registers a new option for the CLI command. This option will be accessible
|
|
55
83
|
* within the command handler, as well as any subcommands.
|
|
@@ -113,6 +141,12 @@ export interface CLI<TArgs extends ParsedArgs = ParsedArgs> {
|
|
|
113
141
|
* @param examples Examples to display in the help text and generated docs.
|
|
114
142
|
*/
|
|
115
143
|
examples(...examples: string[]): CLI<TArgs>;
|
|
144
|
+
/**
|
|
145
|
+
* Allows overriding the version displayed when passing `--version`. Defaults to crawling
|
|
146
|
+
* the file system to get the package.json of the currently executing command.
|
|
147
|
+
* @param override
|
|
148
|
+
*/
|
|
149
|
+
version(override?: string): CLI<TArgs>;
|
|
116
150
|
/**
|
|
117
151
|
* Prints help text to stdout.
|
|
118
152
|
*/
|
|
@@ -155,6 +189,8 @@ export declare class InternalCLI<TArgs extends ParsedArgs = ParsedArgs> implemen
|
|
|
155
189
|
commandChain: string[];
|
|
156
190
|
private requiresCommand;
|
|
157
191
|
private _configuration?;
|
|
192
|
+
private _versionOverride?;
|
|
193
|
+
private registeredErrorHandlers;
|
|
158
194
|
get configuration(): CLICommandOptions<any, any> | undefined;
|
|
159
195
|
private set configuration(value);
|
|
160
196
|
private parser;
|
|
@@ -162,7 +198,7 @@ export declare class InternalCLI<TArgs extends ParsedArgs = ParsedArgs> implemen
|
|
|
162
198
|
* @param name What should the name of the cli command be?
|
|
163
199
|
* @param configuration Configuration for the current CLI command.
|
|
164
200
|
*/
|
|
165
|
-
constructor(name: string);
|
|
201
|
+
constructor(name: string, rootCommandConfiguration?: CLICommandOptions<TArgs>);
|
|
166
202
|
withRootCommandConfiguration<TRootCommandArgs extends TArgs>(configuration: CLICommandOptions<TArgs, TRootCommandArgs>): InternalCLI<TArgs>;
|
|
167
203
|
command<TCommandArgs extends TArgs>(cmd: Command<TArgs, TCommandArgs>): CLI<TArgs>;
|
|
168
204
|
command<TCommandArgs extends TArgs>(key: string, options: CLICommandOptions<TArgs, TCommandArgs>): CLI<TArgs>;
|
|
@@ -176,6 +212,7 @@ export declare class InternalCLI<TArgs extends ParsedArgs = ParsedArgs> implemen
|
|
|
176
212
|
demandCommand(): this;
|
|
177
213
|
usage(usageText: string): this;
|
|
178
214
|
examples(...examples: string[]): this;
|
|
215
|
+
version(version?: string): this;
|
|
179
216
|
/**
|
|
180
217
|
* Gets help text for the current command as a string.
|
|
181
218
|
* @returns Help text for the current command.
|
|
@@ -190,15 +227,21 @@ export declare class InternalCLI<TArgs extends ParsedArgs = ParsedArgs> implemen
|
|
|
190
227
|
* @param cmd The command to run.
|
|
191
228
|
* @param args The arguments to pass to the command.
|
|
192
229
|
*/
|
|
193
|
-
runCommand<T extends ParsedArgs>(cmd: InternalCLI<T>, args: T): Promise<void>;
|
|
230
|
+
runCommand<T extends ParsedArgs>(cmd: InternalCLI<T>, args: T, originalArgV: string[]): Promise<void>;
|
|
231
|
+
enableInteractiveShell(): this;
|
|
232
|
+
private versionHandler;
|
|
233
|
+
private withErrorHandlers;
|
|
234
|
+
errorHandler(handler: ErrorHandler): this;
|
|
194
235
|
/**
|
|
195
236
|
* Parses argv and executes the CLI
|
|
196
237
|
* @param args argv. Defaults to process.argv.slice(2)
|
|
197
238
|
* @returns Promise that resolves when the handler completes.
|
|
198
239
|
*/
|
|
199
|
-
forge(args?: string[])
|
|
240
|
+
forge: (args?: string[]) => Promise<Awaited<TArgs>>;
|
|
200
241
|
getParser(): import("@cli-forge/parser").ReadonlyArgvParser<TArgs & {
|
|
201
242
|
help: boolean;
|
|
243
|
+
} & {
|
|
244
|
+
version: boolean;
|
|
202
245
|
}>;
|
|
203
246
|
getSubcommands(): Readonly<Record<string, InternalCLI>>;
|
|
204
247
|
clone(): InternalCLI<TArgs>;
|
package/src/lib/cli-forge.js
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InternalCLI = void 0;
|
|
4
4
|
exports.cli = cli;
|
|
5
5
|
const parser_1 = require("@cli-forge/parser");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const interactive_shell_1 = require("./interactive-shell");
|
|
6
8
|
/**
|
|
7
9
|
* The base class for a CLI application. This class is used to define the structure of the CLI.
|
|
8
10
|
*
|
|
@@ -32,8 +34,20 @@ class InternalCLI {
|
|
|
32
34
|
* For internal use only. Stick to properties available on {@link CLI}.
|
|
33
35
|
*/
|
|
34
36
|
commandChain = [];
|
|
35
|
-
requiresCommand =
|
|
37
|
+
requiresCommand = 'IMPLICIT';
|
|
36
38
|
_configuration;
|
|
39
|
+
_versionOverride;
|
|
40
|
+
registeredErrorHandlers = [
|
|
41
|
+
(e, actions) => {
|
|
42
|
+
if (e instanceof parser_1.ValidationFailedError) {
|
|
43
|
+
this.printHelp();
|
|
44
|
+
console.log();
|
|
45
|
+
console.log(e.message);
|
|
46
|
+
console.log(e.errors.map((e) => ` - ${e.message}`).join('\n'));
|
|
47
|
+
actions.exit(1);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
];
|
|
37
51
|
get configuration() {
|
|
38
52
|
return this._configuration;
|
|
39
53
|
}
|
|
@@ -49,23 +63,35 @@ class InternalCLI {
|
|
|
49
63
|
}
|
|
50
64
|
const command = currentCommand.registeredCommands[arg];
|
|
51
65
|
if (command && command.configuration) {
|
|
66
|
+
command.parser = this.parser;
|
|
52
67
|
command.configuration.builder?.(command);
|
|
53
68
|
this.commandChain.push(arg);
|
|
54
69
|
return true;
|
|
55
70
|
}
|
|
56
71
|
return false;
|
|
57
72
|
},
|
|
58
|
-
})
|
|
73
|
+
})
|
|
74
|
+
.option('help', {
|
|
59
75
|
type: 'boolean',
|
|
60
76
|
alias: ['h'],
|
|
61
77
|
description: 'Show help for the current command',
|
|
78
|
+
})
|
|
79
|
+
.option('version', {
|
|
80
|
+
type: 'boolean',
|
|
81
|
+
description: 'Show the version number for the CLI',
|
|
62
82
|
});
|
|
63
83
|
/**
|
|
64
84
|
* @param name What should the name of the cli command be?
|
|
65
85
|
* @param configuration Configuration for the current CLI command.
|
|
66
86
|
*/
|
|
67
|
-
constructor(name) {
|
|
87
|
+
constructor(name, rootCommandConfiguration) {
|
|
68
88
|
this.name = name;
|
|
89
|
+
if (rootCommandConfiguration) {
|
|
90
|
+
this.withRootCommandConfiguration(rootCommandConfiguration);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.requiresCommand = 'IMPLICIT';
|
|
94
|
+
}
|
|
69
95
|
}
|
|
70
96
|
withRootCommandConfiguration(configuration) {
|
|
71
97
|
this.configuration = configuration;
|
|
@@ -79,16 +105,14 @@ class InternalCLI {
|
|
|
79
105
|
throw new Error('options must be provided when calling `command` with a string');
|
|
80
106
|
}
|
|
81
107
|
if (key === '$0') {
|
|
82
|
-
this.
|
|
83
|
-
...this.
|
|
108
|
+
this.withRootCommandConfiguration({
|
|
109
|
+
...this._configuration,
|
|
84
110
|
builder: options.builder,
|
|
85
111
|
handler: options.handler,
|
|
86
112
|
description: options.description,
|
|
87
|
-
};
|
|
88
|
-
this.requiresCommand = false;
|
|
113
|
+
});
|
|
89
114
|
}
|
|
90
115
|
this.registeredCommands[key] = new InternalCLI(key).withRootCommandConfiguration(options);
|
|
91
|
-
this.registeredCommands[key].parser = this.parser;
|
|
92
116
|
}
|
|
93
117
|
else if (keyOrCommand instanceof InternalCLI) {
|
|
94
118
|
const cmd = keyOrCommand;
|
|
@@ -107,7 +131,6 @@ class InternalCLI {
|
|
|
107
131
|
this.registeredCommands[val.name] = val;
|
|
108
132
|
// Include any options that were defined via cli(...).option() instead of via builder
|
|
109
133
|
this.parser.augment(val.parser);
|
|
110
|
-
val.parser = this.parser;
|
|
111
134
|
}
|
|
112
135
|
else {
|
|
113
136
|
const { name, ...configuration } = val;
|
|
@@ -139,7 +162,7 @@ class InternalCLI {
|
|
|
139
162
|
return this;
|
|
140
163
|
}
|
|
141
164
|
demandCommand() {
|
|
142
|
-
this.requiresCommand =
|
|
165
|
+
this.requiresCommand = 'EXPLICIT';
|
|
143
166
|
return this;
|
|
144
167
|
}
|
|
145
168
|
usage(usageText) {
|
|
@@ -153,6 +176,10 @@ class InternalCLI {
|
|
|
153
176
|
this.configuration.examples.push(...examples);
|
|
154
177
|
return this;
|
|
155
178
|
}
|
|
179
|
+
version(version) {
|
|
180
|
+
this._versionOverride = version;
|
|
181
|
+
return this;
|
|
182
|
+
}
|
|
156
183
|
/**
|
|
157
184
|
* Gets help text for the current command as a string.
|
|
158
185
|
* @returns Help text for the current command.
|
|
@@ -184,11 +211,12 @@ class InternalCLI {
|
|
|
184
211
|
? ' - ' + subcommand.configuration.description
|
|
185
212
|
: ''}`);
|
|
186
213
|
}
|
|
187
|
-
|
|
214
|
+
const nonpositionalOptions = Object.values(command.parser.configuredOptions).filter((c) => !c.positional);
|
|
215
|
+
if (nonpositionalOptions.length > 0) {
|
|
188
216
|
help.push('');
|
|
189
217
|
help.push('Options:');
|
|
190
218
|
}
|
|
191
|
-
function getOptionParts(
|
|
219
|
+
function getOptionParts(option) {
|
|
192
220
|
const parts = [];
|
|
193
221
|
if (option.description) {
|
|
194
222
|
parts.push(option.description);
|
|
@@ -211,9 +239,8 @@ class InternalCLI {
|
|
|
211
239
|
return parts;
|
|
212
240
|
}
|
|
213
241
|
const allParts = [];
|
|
214
|
-
for (const
|
|
215
|
-
|
|
216
|
-
allParts.push([key, ...getOptionParts(key, option)]);
|
|
242
|
+
for (const option of nonpositionalOptions) {
|
|
243
|
+
allParts.push([option.key, ...getOptionParts(option)]);
|
|
217
244
|
}
|
|
218
245
|
const paddingValues = [];
|
|
219
246
|
for (let i = 0; i < allParts.length; i++) {
|
|
@@ -253,7 +280,7 @@ class InternalCLI {
|
|
|
253
280
|
* @param cmd The command to run.
|
|
254
281
|
* @param args The arguments to pass to the command.
|
|
255
282
|
*/
|
|
256
|
-
async runCommand(cmd, args) {
|
|
283
|
+
async runCommand(cmd, args, originalArgV) {
|
|
257
284
|
try {
|
|
258
285
|
if (cmd.requiresCommand) {
|
|
259
286
|
throw new Error(`${[this.name, ...this.commandChain].join(' ')} requires a command`);
|
|
@@ -264,7 +291,26 @@ class InternalCLI {
|
|
|
264
291
|
});
|
|
265
292
|
}
|
|
266
293
|
else {
|
|
267
|
-
|
|
294
|
+
// We can treat a command as a subshell if it has subcommands
|
|
295
|
+
if (Object.keys(cmd.registeredCommands).length > 0) {
|
|
296
|
+
cmd.command('help', { handler: () => this.printHelp() });
|
|
297
|
+
if (!interactive_shell_1.INTERACTIVE_SHELL) {
|
|
298
|
+
const tui = new interactive_shell_1.InteractiveShell(this, {
|
|
299
|
+
prependArgs: originalArgV,
|
|
300
|
+
});
|
|
301
|
+
await new Promise((res) => {
|
|
302
|
+
['SIGINT', 'SIGTERM', 'SIGQUIT'].forEach((s) => process.on(s, () => {
|
|
303
|
+
tui.close();
|
|
304
|
+
res();
|
|
305
|
+
}));
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// No subcommands so subshell doesn't make sense
|
|
310
|
+
// No handler, so nothing to run
|
|
311
|
+
else {
|
|
312
|
+
throw new Error(`${[this.name, ...this.commandChain].join(' ')} is not implemented.`);
|
|
313
|
+
}
|
|
268
314
|
}
|
|
269
315
|
}
|
|
270
316
|
catch (e) {
|
|
@@ -273,12 +319,65 @@ class InternalCLI {
|
|
|
273
319
|
this.printHelp();
|
|
274
320
|
}
|
|
275
321
|
}
|
|
322
|
+
enableInteractiveShell() {
|
|
323
|
+
if (this.requiresCommand === 'EXPLICIT') {
|
|
324
|
+
throw new Error('Interactive shell is not supported for commands that require a command.');
|
|
325
|
+
}
|
|
326
|
+
else if (process.stdout.isTTY) {
|
|
327
|
+
this.requiresCommand = false;
|
|
328
|
+
}
|
|
329
|
+
return this;
|
|
330
|
+
}
|
|
331
|
+
versionHandler() {
|
|
332
|
+
if (this._versionOverride) {
|
|
333
|
+
console.log(this._versionOverride);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
let mainFile = require?.main?.filename;
|
|
337
|
+
mainFile ??= (0, utils_1.getCallingFile)();
|
|
338
|
+
if (!mainFile) {
|
|
339
|
+
console.log('unknown');
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
const packageJson = (0, utils_1.getParentPackageJson)(mainFile);
|
|
343
|
+
console.log(packageJson.version ?? 'unknown');
|
|
344
|
+
}
|
|
345
|
+
async withErrorHandlers(cb) {
|
|
346
|
+
try {
|
|
347
|
+
return await cb();
|
|
348
|
+
}
|
|
349
|
+
catch (e) {
|
|
350
|
+
let handled = false;
|
|
351
|
+
for (const handler of this.registeredErrorHandlers) {
|
|
352
|
+
try {
|
|
353
|
+
handler(e, {
|
|
354
|
+
exit: (c) => {
|
|
355
|
+
process.exit(c);
|
|
356
|
+
},
|
|
357
|
+
});
|
|
358
|
+
// Error was handled, no need to continue
|
|
359
|
+
break;
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
// Error was not handled, continue to the next handler
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
if (!handled) {
|
|
366
|
+
throw e;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return {};
|
|
370
|
+
}
|
|
371
|
+
errorHandler(handler) {
|
|
372
|
+
this.registeredErrorHandlers.unshift(handler);
|
|
373
|
+
return this;
|
|
374
|
+
}
|
|
276
375
|
/**
|
|
277
376
|
* Parses argv and executes the CLI
|
|
278
377
|
* @param args argv. Defaults to process.argv.slice(2)
|
|
279
378
|
* @returns Promise that resolves when the handler completes.
|
|
280
379
|
*/
|
|
281
|
-
|
|
380
|
+
forge = (args = (0, parser_1.hideBin)(process.argv)) => this.withErrorHandlers(async () => {
|
|
282
381
|
// Parsing the args does two things:
|
|
283
382
|
// - builds argv to pass to handler
|
|
284
383
|
// - fills the command chain + registers commands
|
|
@@ -301,21 +400,28 @@ class InternalCLI {
|
|
|
301
400
|
for (const command of this.commandChain) {
|
|
302
401
|
currentCommand = currentCommand.registeredCommands[command];
|
|
303
402
|
}
|
|
403
|
+
if (argv.version) {
|
|
404
|
+
this.versionHandler();
|
|
405
|
+
return argv;
|
|
406
|
+
}
|
|
304
407
|
if (argv.help) {
|
|
305
408
|
this.printHelp();
|
|
306
409
|
return argv;
|
|
307
410
|
}
|
|
308
411
|
else if (validationFailedError) {
|
|
309
|
-
this.printHelp();
|
|
310
412
|
throw validationFailedError;
|
|
311
413
|
}
|
|
312
|
-
const finalArgV =
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
414
|
+
const finalArgV = (() => {
|
|
415
|
+
if (currentCommand === this) {
|
|
416
|
+
if (this.configuration?.builder) {
|
|
417
|
+
return (this.configuration.builder?.(this)).parser.parse(args);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return argv;
|
|
421
|
+
})();
|
|
422
|
+
await this.runCommand(currentCommand, finalArgV, args);
|
|
317
423
|
return finalArgV;
|
|
318
|
-
}
|
|
424
|
+
});
|
|
319
425
|
getParser() {
|
|
320
426
|
return this.parser.asReadonly();
|
|
321
427
|
}
|
|
@@ -324,13 +430,17 @@ class InternalCLI {
|
|
|
324
430
|
}
|
|
325
431
|
clone() {
|
|
326
432
|
const clone = new InternalCLI(this.name);
|
|
433
|
+
clone.parser = this.parser.clone(clone.parser.options);
|
|
327
434
|
if (this.configuration) {
|
|
328
435
|
clone.withRootCommandConfiguration(this.configuration);
|
|
329
436
|
}
|
|
330
|
-
clone.registeredCommands = {
|
|
437
|
+
clone.registeredCommands = {};
|
|
438
|
+
for (const command in this.registeredCommands ?? {}) {
|
|
439
|
+
clone.command(this.registeredCommands[command].clone());
|
|
440
|
+
// this.registeredCommands[command].clone();
|
|
441
|
+
}
|
|
331
442
|
clone.commandChain = [...this.commandChain];
|
|
332
443
|
clone.requiresCommand = this.requiresCommand;
|
|
333
|
-
clone.parser = this.parser.clone();
|
|
334
444
|
return clone;
|
|
335
445
|
}
|
|
336
446
|
}
|
|
@@ -342,14 +452,7 @@ exports.InternalCLI = InternalCLI;
|
|
|
342
452
|
* @returns A {@link InternalCLI} instance.
|
|
343
453
|
*/
|
|
344
454
|
function cli(name, rootCommandConfiguration) {
|
|
345
|
-
|
|
346
|
-
if (rootCommandConfiguration) {
|
|
347
|
-
cli.withRootCommandConfiguration(rootCommandConfiguration);
|
|
348
|
-
}
|
|
349
|
-
else {
|
|
350
|
-
cli.demandCommand();
|
|
351
|
-
}
|
|
352
|
-
return cli;
|
|
455
|
+
return new InternalCLI(name, rootCommandConfiguration);
|
|
353
456
|
}
|
|
354
457
|
exports.default = cli;
|
|
355
458
|
//# sourceMappingURL=cli-forge.js.map
|
package/src/lib/cli-forge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-forge.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/cli-forge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-forge.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/cli-forge.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,19 +18,8 @@ export declare function generateDocumentation(cli: InternalCLI, commandChain?: s
|
|
|
18
18
|
description: string | undefined;
|
|
19
19
|
usage: string;
|
|
20
20
|
examples: string[];
|
|
21
|
-
options:
|
|
22
|
-
|
|
23
|
-
key: string;
|
|
24
|
-
position?: number;
|
|
25
|
-
};
|
|
26
|
-
'--'?: (OptionConfig<any> & {
|
|
27
|
-
key: string;
|
|
28
|
-
position?: number;
|
|
29
|
-
}) | undefined;
|
|
30
|
-
help: OptionConfig<any> & {
|
|
31
|
-
key: string;
|
|
32
|
-
position?: number;
|
|
33
|
-
};
|
|
21
|
+
options: Record<string, OptionConfig & {
|
|
22
|
+
key: string;
|
|
34
23
|
}>;
|
|
35
24
|
positionals: readonly Readonly<OptionConfig<any> & {
|
|
36
25
|
key: string;
|
package/src/lib/documentation.js
CHANGED
|
@@ -9,6 +9,9 @@ function generateDocumentation(cli, commandChain = []) {
|
|
|
9
9
|
const parser = cli.getParser();
|
|
10
10
|
const options = parser.configuredOptions;
|
|
11
11
|
const positionals = parser.configuredPositionals;
|
|
12
|
+
for (const positional of positionals) {
|
|
13
|
+
delete options[positional.key];
|
|
14
|
+
}
|
|
12
15
|
const subcommands = Object.values(cli.getSubcommands()).map((cmd) => generateDocumentation(cmd.clone(), [...commandChain, cli.name]));
|
|
13
16
|
return {
|
|
14
17
|
name: cli.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/documentation.ts"],"names":[],"mappings":";;AAaA,
|
|
1
|
+
{"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/documentation.ts"],"names":[],"mappings":";;AAaA,sDAqCC;AArCD,SAAgB,qBAAqB,CACnC,GAAgB,EAChB,eAAyB,EAAE;IAE3B,8CAA8C;IAC9C,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAC/B,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAE/B,MAAM,OAAO,GACX,MAAM,CAAC,iBAAiB,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,WAAW,GAAoB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAC1E,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CACzE,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW;QAC3C,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK;YAC7B,CAAC,CAAC,YAAY,CAAC,MAAM;gBACnB,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtD,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK;YAC5B,CAAC,CAAC;gBACE,GAAG,YAAY;gBACf,GAAG,CAAC,IAAI;gBACR,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;aACtE,CAAC,IAAI,CAAC,GAAG,CAAC;QACf,QAAQ,EAAE,GAAG,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE;QAC3C,OAAO;QACP,WAAW;QACX,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InternalCLI } from './cli-forge';
|
|
2
|
+
export interface InteractiveShellOptions {
|
|
3
|
+
prompt?: string;
|
|
4
|
+
prependArgs?: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare let INTERACTIVE_SHELL: InteractiveShell | undefined;
|
|
7
|
+
export declare class InteractiveShell {
|
|
8
|
+
private readonly rl;
|
|
9
|
+
private listeners;
|
|
10
|
+
constructor(cli: InternalCLI, opts?: InteractiveShellOptions);
|
|
11
|
+
registerLineListener(callback: (line: string) => Promise<void>): void;
|
|
12
|
+
close(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InteractiveShell = exports.INTERACTIVE_SHELL = void 0;
|
|
4
|
+
const readline = require("readline");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const parser_1 = require("@cli-forge/parser");
|
|
8
|
+
function normalizeShellOptions(cli, options) {
|
|
9
|
+
return {
|
|
10
|
+
prompt: options?.prompt ??
|
|
11
|
+
(() => {
|
|
12
|
+
const chain = [cli.name];
|
|
13
|
+
if (cli.commandChain.length > 2) {
|
|
14
|
+
chain.push('...', ...cli.commandChain[cli.command.length - 1]);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
chain.push(...cli.commandChain);
|
|
18
|
+
}
|
|
19
|
+
return chain.join(' ') + '> ';
|
|
20
|
+
})(),
|
|
21
|
+
prependArgs: options?.prependArgs ?? [],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
class InteractiveShell {
|
|
25
|
+
rl;
|
|
26
|
+
listeners = [];
|
|
27
|
+
constructor(cli, opts) {
|
|
28
|
+
if (exports.INTERACTIVE_SHELL) {
|
|
29
|
+
throw new Error('Only one interactive shell can be created at a time. Make sure the other instance is closed.');
|
|
30
|
+
}
|
|
31
|
+
exports.INTERACTIVE_SHELL = this;
|
|
32
|
+
const { prompt, prependArgs } = normalizeShellOptions(cli, opts);
|
|
33
|
+
this.rl = readline
|
|
34
|
+
.createInterface({
|
|
35
|
+
input: process.stdin,
|
|
36
|
+
output: process.stdout,
|
|
37
|
+
prompt: prompt,
|
|
38
|
+
})
|
|
39
|
+
.on('SIGINT', () => {
|
|
40
|
+
process.emit('SIGINT');
|
|
41
|
+
});
|
|
42
|
+
this.rl.prompt();
|
|
43
|
+
this.registerLineListener(async (line) => {
|
|
44
|
+
const nextArgs = (0, utils_1.stringToArgs)(line);
|
|
45
|
+
let currentCommand = cli;
|
|
46
|
+
for (const subcommand of cli.commandChain) {
|
|
47
|
+
currentCommand = currentCommand.registeredCommands[subcommand];
|
|
48
|
+
}
|
|
49
|
+
if (currentCommand.registeredCommands[nextArgs[0]]) {
|
|
50
|
+
(0, child_process_1.spawnSync)(process.execPath, [
|
|
51
|
+
...process.execArgv,
|
|
52
|
+
(0, parser_1.getBin)(process.argv),
|
|
53
|
+
...prependArgs,
|
|
54
|
+
...nextArgs,
|
|
55
|
+
], { stdio: 'inherit' });
|
|
56
|
+
}
|
|
57
|
+
else if (line.trim()) {
|
|
58
|
+
try {
|
|
59
|
+
(0, child_process_1.execSync)(line, { stdio: 'inherit' });
|
|
60
|
+
}
|
|
61
|
+
catch { }
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
registerLineListener(callback) {
|
|
66
|
+
const wrapped = async (line) => {
|
|
67
|
+
this.rl.pause();
|
|
68
|
+
await callback(line);
|
|
69
|
+
this.rl.prompt();
|
|
70
|
+
};
|
|
71
|
+
this.listeners.push(wrapped);
|
|
72
|
+
this.rl.on('line', wrapped);
|
|
73
|
+
}
|
|
74
|
+
close() {
|
|
75
|
+
this.listeners.forEach((listener) => this.rl.off('line', listener));
|
|
76
|
+
this.rl.close();
|
|
77
|
+
readline.moveCursor(process.stdout, -1 * this.rl.getCursorPos().cols, 0);
|
|
78
|
+
readline.clearScreenDown(process.stdout);
|
|
79
|
+
if (exports.INTERACTIVE_SHELL === this) {
|
|
80
|
+
exports.INTERACTIVE_SHELL = undefined;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.InteractiveShell = InteractiveShell;
|
|
85
|
+
//# sourceMappingURL=interactive-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-shell.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/interactive-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function getCallingFile(): string | undefined;
|
|
2
|
+
export declare function getParentPackageJson(searchPath: string): {
|
|
3
|
+
name: string;
|
|
4
|
+
version: string;
|
|
5
|
+
bin?: {
|
|
6
|
+
[cmd: string]: string;
|
|
7
|
+
};
|
|
8
|
+
dependencies?: Record<string, string>;
|
|
9
|
+
};
|
|
10
|
+
export declare function stringToArgs(str: string): string[];
|
package/src/lib/utils.js
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCallingFile = getCallingFile;
|
|
4
|
+
exports.getParentPackageJson = getParentPackageJson;
|
|
5
|
+
exports.stringToArgs = stringToArgs;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
function getCallingFile() {
|
|
9
|
+
// Since this function lives in a utility file, the parent file
|
|
10
|
+
// would just be the file that invokes getCallingFile... We actually
|
|
11
|
+
// want the parent of the file that calls this, which is this file's
|
|
12
|
+
// grandparent.
|
|
13
|
+
let grandparentFile;
|
|
14
|
+
// Overrides prepare stack trace to be an identity fn, to get the callsites
|
|
15
|
+
// associated with the current error.
|
|
16
|
+
const _pst = Error.prepareStackTrace;
|
|
17
|
+
Error.prepareStackTrace = function (err, stack) {
|
|
18
|
+
return stack;
|
|
19
|
+
};
|
|
20
|
+
try {
|
|
21
|
+
const err = new Error();
|
|
22
|
+
const callsites = err.stack;
|
|
23
|
+
let currentfile = callsites.shift().getFileName();
|
|
24
|
+
let parentfile;
|
|
25
|
+
while (callsites.length) {
|
|
26
|
+
const callerfile = callsites.shift().getFileName();
|
|
27
|
+
// We've reached the parent file
|
|
28
|
+
if (currentfile !== callerfile) {
|
|
29
|
+
// We've reached the grandparent file
|
|
30
|
+
if (parentfile && parentfile !== callerfile) {
|
|
31
|
+
grandparentFile = parentfile;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
parentfile = callerfile;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
Error.prepareStackTrace = _pst;
|
|
40
|
+
}
|
|
41
|
+
return grandparentFile;
|
|
42
|
+
}
|
|
43
|
+
function getParentPackageJson(searchPath) {
|
|
44
|
+
let currentPath = searchPath;
|
|
45
|
+
let packageJsonPath;
|
|
46
|
+
while (true) {
|
|
47
|
+
const packagePath = (0, path_1.join)(currentPath, 'package.json');
|
|
48
|
+
if ((0, fs_1.existsSync)(packagePath)) {
|
|
49
|
+
packageJsonPath = packagePath;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
const nextPath = (0, path_1.resolve)(currentPath, '..');
|
|
53
|
+
if (nextPath === currentPath) {
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
currentPath = nextPath;
|
|
57
|
+
}
|
|
58
|
+
if (!packageJsonPath) {
|
|
59
|
+
throw new Error('Could not find package.json');
|
|
60
|
+
}
|
|
61
|
+
return require(packageJsonPath);
|
|
62
|
+
}
|
|
63
|
+
function stringToArgs(str) {
|
|
64
|
+
const quotePairs = new Map([
|
|
65
|
+
['"', '"'],
|
|
66
|
+
["'", "'"],
|
|
67
|
+
['`', '`'],
|
|
68
|
+
]);
|
|
69
|
+
const escapeChars = new Set(['\\']);
|
|
70
|
+
let activeQuote;
|
|
71
|
+
const args = [];
|
|
72
|
+
let currentArg = '';
|
|
73
|
+
let prev;
|
|
74
|
+
for (let i = 0; i < str.length; i++) {
|
|
75
|
+
const char = str[i];
|
|
76
|
+
if (activeQuote) {
|
|
77
|
+
while (true) {
|
|
78
|
+
if (i >= str.length) {
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
else if (str[i] === quotePairs.get(activeQuote) &&
|
|
82
|
+
!(prev && escapeChars.has(prev))) {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
if (!escapeChars.has(str[i])) {
|
|
86
|
+
currentArg += str[i];
|
|
87
|
+
}
|
|
88
|
+
prev = str[i];
|
|
89
|
+
i++;
|
|
90
|
+
}
|
|
91
|
+
activeQuote = undefined;
|
|
92
|
+
}
|
|
93
|
+
else if (quotePairs.has(char) && !(prev && escapeChars.has(prev))) {
|
|
94
|
+
activeQuote = char;
|
|
95
|
+
}
|
|
96
|
+
else if (char === ' ' &&
|
|
97
|
+
prev !== ' ' &&
|
|
98
|
+
!(prev && escapeChars.has(prev))) {
|
|
99
|
+
args.push(currentArg);
|
|
100
|
+
currentArg = '';
|
|
101
|
+
}
|
|
102
|
+
else if (!escapeChars.has(char) || (prev && escapeChars.has(prev))) {
|
|
103
|
+
currentArg += char;
|
|
104
|
+
}
|
|
105
|
+
prev = char;
|
|
106
|
+
}
|
|
107
|
+
args.push(currentArg);
|
|
108
|
+
return args;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../packages/cli-forge/src/lib/utils.ts"],"names":[],"mappings":"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"}
|