@contember/cli-common 2.1.0-alpha.3 → 2.1.0-alpha.35
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/package.json +11 -6
- package/src/application/Application.ts +6 -4
- package/src/index.ts +1 -1
- package/src/npm/CommandRunner.ts +0 -1
- package/src/npm/PackageWorkspace.ts +0 -2
- package/src/npm/packageManagers/PackageManagerHelpers.ts +3 -1
- package/src/npm/packageManagers/Yarn.ts +2 -1
- package/dist/development/index.cjs +0 -32
- package/dist/development/index.cjs.map +0 -1
- package/dist/development/index.js +0 -32
- package/dist/development/index.js.map +0 -1
- package/dist/development/src/application/Application.cjs +0 -82
- package/dist/development/src/application/Application.cjs.map +0 -1
- package/dist/development/src/application/Application.js +0 -82
- package/dist/development/src/application/Application.js.map +0 -1
- package/dist/development/src/application/Argument.cjs +0 -25
- package/dist/development/src/application/Argument.cjs.map +0 -1
- package/dist/development/src/application/Argument.js +0 -25
- package/dist/development/src/application/Argument.js.map +0 -1
- package/dist/development/src/application/Command.cjs +0 -28
- package/dist/development/src/application/Command.cjs.map +0 -1
- package/dist/development/src/application/Command.js +0 -28
- package/dist/development/src/application/Command.js.map +0 -1
- package/dist/development/src/application/CommandConfiguration.cjs +0 -44
- package/dist/development/src/application/CommandConfiguration.cjs.map +0 -1
- package/dist/development/src/application/CommandConfiguration.js +0 -44
- package/dist/development/src/application/CommandConfiguration.js.map +0 -1
- package/dist/development/src/application/CommandManager.cjs +0 -37
- package/dist/development/src/application/CommandManager.cjs.map +0 -1
- package/dist/development/src/application/CommandManager.js +0 -37
- package/dist/development/src/application/CommandManager.js.map +0 -1
- package/dist/development/src/application/Input.cjs +0 -16
- package/dist/development/src/application/Input.cjs.map +0 -1
- package/dist/development/src/application/Input.js +0 -16
- package/dist/development/src/application/Input.js.map +0 -1
- package/dist/development/src/application/InputParser.cjs +0 -117
- package/dist/development/src/application/InputParser.cjs.map +0 -1
- package/dist/development/src/application/InputParser.js +0 -117
- package/dist/development/src/application/InputParser.js.map +0 -1
- package/dist/development/src/application/Option.cjs +0 -49
- package/dist/development/src/application/Option.cjs.map +0 -1
- package/dist/development/src/application/Option.js +0 -49
- package/dist/development/src/application/Option.js.map +0 -1
- package/dist/development/src/application/UsageFormatter.cjs +0 -61
- package/dist/development/src/application/UsageFormatter.cjs.map +0 -1
- package/dist/development/src/application/UsageFormatter.js +0 -61
- package/dist/development/src/application/UsageFormatter.js.map +0 -1
- package/dist/development/src/application/assertNever.cjs +0 -7
- package/dist/development/src/application/assertNever.cjs.map +0 -1
- package/dist/development/src/application/assertNever.js +0 -7
- package/dist/development/src/application/assertNever.js.map +0 -1
- package/dist/development/src/npm/CommandRunner.cjs +0 -59
- package/dist/development/src/npm/CommandRunner.cjs.map +0 -1
- package/dist/development/src/npm/CommandRunner.js +0 -59
- package/dist/development/src/npm/CommandRunner.js.map +0 -1
- package/dist/development/src/npm/Package.cjs +0 -11
- package/dist/development/src/npm/Package.cjs.map +0 -1
- package/dist/development/src/npm/Package.js +0 -11
- package/dist/development/src/npm/Package.js.map +0 -1
- package/dist/development/src/npm/PackageWorkspace.cjs +0 -79
- package/dist/development/src/npm/PackageWorkspace.cjs.map +0 -1
- package/dist/development/src/npm/PackageWorkspace.js +0 -79
- package/dist/development/src/npm/PackageWorkspace.js.map +0 -1
- package/dist/development/src/npm/PackageWorkspaceResolver.cjs +0 -48
- package/dist/development/src/npm/PackageWorkspaceResolver.cjs.map +0 -1
- package/dist/development/src/npm/PackageWorkspaceResolver.js +0 -48
- package/dist/development/src/npm/PackageWorkspaceResolver.js.map +0 -1
- package/dist/development/src/npm/packageManagers/Bun.cjs +0 -34
- package/dist/development/src/npm/packageManagers/Bun.cjs.map +0 -1
- package/dist/development/src/npm/packageManagers/Bun.js +0 -34
- package/dist/development/src/npm/packageManagers/Bun.js.map +0 -1
- package/dist/development/src/npm/packageManagers/Npm.cjs +0 -34
- package/dist/development/src/npm/packageManagers/Npm.cjs.map +0 -1
- package/dist/development/src/npm/packageManagers/Npm.js +0 -34
- package/dist/development/src/npm/packageManagers/Npm.js.map +0 -1
- package/dist/development/src/npm/packageManagers/PackageManagerHelpers.cjs +0 -32
- package/dist/development/src/npm/packageManagers/PackageManagerHelpers.cjs.map +0 -1
- package/dist/development/src/npm/packageManagers/PackageManagerHelpers.js +0 -32
- package/dist/development/src/npm/packageManagers/PackageManagerHelpers.js.map +0 -1
- package/dist/development/src/npm/packageManagers/Pnpm.cjs +0 -39
- package/dist/development/src/npm/packageManagers/Pnpm.cjs.map +0 -1
- package/dist/development/src/npm/packageManagers/Pnpm.js +0 -39
- package/dist/development/src/npm/packageManagers/Pnpm.js.map +0 -1
- package/dist/development/src/npm/packageManagers/Yarn.cjs +0 -34
- package/dist/development/src/npm/packageManagers/Yarn.cjs.map +0 -1
- package/dist/development/src/npm/packageManagers/Yarn.js +0 -34
- package/dist/development/src/npm/packageManagers/Yarn.js.map +0 -1
- package/dist/development/src/npm/packageManagers/YarnClassic.cjs +0 -35
- package/dist/development/src/npm/packageManagers/YarnClassic.cjs.map +0 -1
- package/dist/development/src/npm/packageManagers/YarnClassic.js +0 -35
- package/dist/development/src/npm/packageManagers/YarnClassic.js.map +0 -1
- package/dist/development/src/utils/findPackageRoot.cjs +0 -20
- package/dist/development/src/utils/findPackageRoot.cjs.map +0 -1
- package/dist/development/src/utils/findPackageRoot.js +0 -20
- package/dist/development/src/utils/findPackageRoot.js.map +0 -1
- package/dist/production/index.cjs +0 -32
- package/dist/production/index.cjs.map +0 -1
- package/dist/production/index.js +0 -32
- package/dist/production/index.js.map +0 -1
- package/dist/production/src/application/Application.cjs +0 -82
- package/dist/production/src/application/Application.cjs.map +0 -1
- package/dist/production/src/application/Application.js +0 -82
- package/dist/production/src/application/Application.js.map +0 -1
- package/dist/production/src/application/Argument.cjs +0 -25
- package/dist/production/src/application/Argument.cjs.map +0 -1
- package/dist/production/src/application/Argument.js +0 -25
- package/dist/production/src/application/Argument.js.map +0 -1
- package/dist/production/src/application/Command.cjs +0 -28
- package/dist/production/src/application/Command.cjs.map +0 -1
- package/dist/production/src/application/Command.js +0 -28
- package/dist/production/src/application/Command.js.map +0 -1
- package/dist/production/src/application/CommandConfiguration.cjs +0 -44
- package/dist/production/src/application/CommandConfiguration.cjs.map +0 -1
- package/dist/production/src/application/CommandConfiguration.js +0 -44
- package/dist/production/src/application/CommandConfiguration.js.map +0 -1
- package/dist/production/src/application/CommandManager.cjs +0 -37
- package/dist/production/src/application/CommandManager.cjs.map +0 -1
- package/dist/production/src/application/CommandManager.js +0 -37
- package/dist/production/src/application/CommandManager.js.map +0 -1
- package/dist/production/src/application/Input.cjs +0 -16
- package/dist/production/src/application/Input.cjs.map +0 -1
- package/dist/production/src/application/Input.js +0 -16
- package/dist/production/src/application/Input.js.map +0 -1
- package/dist/production/src/application/InputParser.cjs +0 -117
- package/dist/production/src/application/InputParser.cjs.map +0 -1
- package/dist/production/src/application/InputParser.js +0 -117
- package/dist/production/src/application/InputParser.js.map +0 -1
- package/dist/production/src/application/Option.cjs +0 -49
- package/dist/production/src/application/Option.cjs.map +0 -1
- package/dist/production/src/application/Option.js +0 -49
- package/dist/production/src/application/Option.js.map +0 -1
- package/dist/production/src/application/UsageFormatter.cjs +0 -61
- package/dist/production/src/application/UsageFormatter.cjs.map +0 -1
- package/dist/production/src/application/UsageFormatter.js +0 -61
- package/dist/production/src/application/UsageFormatter.js.map +0 -1
- package/dist/production/src/application/assertNever.cjs +0 -7
- package/dist/production/src/application/assertNever.cjs.map +0 -1
- package/dist/production/src/application/assertNever.js +0 -7
- package/dist/production/src/application/assertNever.js.map +0 -1
- package/dist/production/src/npm/CommandRunner.cjs +0 -59
- package/dist/production/src/npm/CommandRunner.cjs.map +0 -1
- package/dist/production/src/npm/CommandRunner.js +0 -59
- package/dist/production/src/npm/CommandRunner.js.map +0 -1
- package/dist/production/src/npm/Package.cjs +0 -11
- package/dist/production/src/npm/Package.cjs.map +0 -1
- package/dist/production/src/npm/Package.js +0 -11
- package/dist/production/src/npm/Package.js.map +0 -1
- package/dist/production/src/npm/PackageWorkspace.cjs +0 -79
- package/dist/production/src/npm/PackageWorkspace.cjs.map +0 -1
- package/dist/production/src/npm/PackageWorkspace.js +0 -79
- package/dist/production/src/npm/PackageWorkspace.js.map +0 -1
- package/dist/production/src/npm/PackageWorkspaceResolver.cjs +0 -48
- package/dist/production/src/npm/PackageWorkspaceResolver.cjs.map +0 -1
- package/dist/production/src/npm/PackageWorkspaceResolver.js +0 -48
- package/dist/production/src/npm/PackageWorkspaceResolver.js.map +0 -1
- package/dist/production/src/npm/packageManagers/Bun.cjs +0 -34
- package/dist/production/src/npm/packageManagers/Bun.cjs.map +0 -1
- package/dist/production/src/npm/packageManagers/Bun.js +0 -34
- package/dist/production/src/npm/packageManagers/Bun.js.map +0 -1
- package/dist/production/src/npm/packageManagers/Npm.cjs +0 -34
- package/dist/production/src/npm/packageManagers/Npm.cjs.map +0 -1
- package/dist/production/src/npm/packageManagers/Npm.js +0 -34
- package/dist/production/src/npm/packageManagers/Npm.js.map +0 -1
- package/dist/production/src/npm/packageManagers/PackageManagerHelpers.cjs +0 -32
- package/dist/production/src/npm/packageManagers/PackageManagerHelpers.cjs.map +0 -1
- package/dist/production/src/npm/packageManagers/PackageManagerHelpers.js +0 -32
- package/dist/production/src/npm/packageManagers/PackageManagerHelpers.js.map +0 -1
- package/dist/production/src/npm/packageManagers/Pnpm.cjs +0 -39
- package/dist/production/src/npm/packageManagers/Pnpm.cjs.map +0 -1
- package/dist/production/src/npm/packageManagers/Pnpm.js +0 -39
- package/dist/production/src/npm/packageManagers/Pnpm.js.map +0 -1
- package/dist/production/src/npm/packageManagers/Yarn.cjs +0 -34
- package/dist/production/src/npm/packageManagers/Yarn.cjs.map +0 -1
- package/dist/production/src/npm/packageManagers/Yarn.js +0 -34
- package/dist/production/src/npm/packageManagers/Yarn.js.map +0 -1
- package/dist/production/src/npm/packageManagers/YarnClassic.cjs +0 -35
- package/dist/production/src/npm/packageManagers/YarnClassic.cjs.map +0 -1
- package/dist/production/src/npm/packageManagers/YarnClassic.js +0 -35
- package/dist/production/src/npm/packageManagers/YarnClassic.js.map +0 -1
- package/dist/production/src/utils/findPackageRoot.cjs +0 -20
- package/dist/production/src/utils/findPackageRoot.cjs.map +0 -1
- package/dist/production/src/utils/findPackageRoot.js +0 -20
- package/dist/production/src/utils/findPackageRoot.js.map +0 -1
- package/dist/types/application/Application.d.ts +0 -18
- package/dist/types/application/Application.d.ts.map +0 -1
- package/dist/types/application/Argument.d.ts +0 -16
- package/dist/types/application/Argument.d.ts.map +0 -1
- package/dist/types/application/Command.d.ts +0 -10
- package/dist/types/application/Command.d.ts.map +0 -1
- package/dist/types/application/CommandConfiguration.d.ts +0 -23
- package/dist/types/application/CommandConfiguration.d.ts.map +0 -1
- package/dist/types/application/CommandManager.d.ts +0 -11
- package/dist/types/application/CommandManager.d.ts.map +0 -1
- package/dist/types/application/Input.d.ts +0 -10
- package/dist/types/application/Input.d.ts.map +0 -1
- package/dist/types/application/InputParser.d.ts +0 -13
- package/dist/types/application/InputParser.d.ts.map +0 -1
- package/dist/types/application/Option.d.ts +0 -27
- package/dist/types/application/Option.d.ts.map +0 -1
- package/dist/types/application/UsageFormatter.d.ts +0 -11
- package/dist/types/application/UsageFormatter.d.ts.map +0 -1
- package/dist/types/application/assertNever.d.ts +0 -2
- package/dist/types/application/assertNever.d.ts.map +0 -1
- package/dist/types/application/index.d.ts +0 -11
- package/dist/types/application/index.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/npm/CommandRunner.d.ts +0 -22
- package/dist/types/npm/CommandRunner.d.ts.map +0 -1
- package/dist/types/npm/FileSystem.d.ts +0 -7
- package/dist/types/npm/FileSystem.d.ts.map +0 -1
- package/dist/types/npm/Package.d.ts +0 -8
- package/dist/types/npm/Package.d.ts.map +0 -1
- package/dist/types/npm/PackageJson.d.ts +0 -13
- package/dist/types/npm/PackageJson.d.ts.map +0 -1
- package/dist/types/npm/PackageWorkspace.d.ts +0 -25
- package/dist/types/npm/PackageWorkspace.d.ts.map +0 -1
- package/dist/types/npm/PackageWorkspaceResolver.d.ts +0 -13
- package/dist/types/npm/PackageWorkspaceResolver.d.ts.map +0 -1
- package/dist/types/npm/index.d.ts +0 -9
- package/dist/types/npm/index.d.ts.map +0 -1
- package/dist/types/npm/packageManagers/Bun.d.ts +0 -24
- package/dist/types/npm/packageManagers/Bun.d.ts.map +0 -1
- package/dist/types/npm/packageManagers/Npm.d.ts +0 -24
- package/dist/types/npm/packageManagers/Npm.d.ts.map +0 -1
- package/dist/types/npm/packageManagers/PackageManager.d.ts +0 -18
- package/dist/types/npm/packageManagers/PackageManager.d.ts.map +0 -1
- package/dist/types/npm/packageManagers/PackageManagerHelpers.d.ts +0 -15
- package/dist/types/npm/packageManagers/PackageManagerHelpers.d.ts.map +0 -1
- package/dist/types/npm/packageManagers/Pnpm.d.ts +0 -24
- package/dist/types/npm/packageManagers/Pnpm.d.ts.map +0 -1
- package/dist/types/npm/packageManagers/Yarn.d.ts +0 -24
- package/dist/types/npm/packageManagers/Yarn.d.ts.map +0 -1
- package/dist/types/npm/packageManagers/YarnClassic.d.ts +0 -24
- package/dist/types/npm/packageManagers/YarnClassic.d.ts.map +0 -1
- package/dist/types/tsconfig.tsbuildinfo +0 -1
- package/dist/types/utils/findPackageRoot.d.ts +0 -2
- package/dist/types/utils/findPackageRoot.d.ts.map +0 -1
- package/dist/types/utils/index.d.ts +0 -2
- package/dist/types/utils/index.d.ts.map +0 -1
- package/src/.eslintrc.cjs +0 -5
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { InvalidInputError } from "./InputParser.js";
|
|
2
|
-
import chalk from "chalk";
|
|
3
|
-
class Application {
|
|
4
|
-
constructor(commandManager, applicationDescription, options = {}) {
|
|
5
|
-
this.commandManager = commandManager;
|
|
6
|
-
this.applicationDescription = applicationDescription;
|
|
7
|
-
this.options = options;
|
|
8
|
-
}
|
|
9
|
-
async run(args) {
|
|
10
|
-
const [name, ...rest] = args;
|
|
11
|
-
if (!name || name === "--help") {
|
|
12
|
-
console.error(this.applicationDescription);
|
|
13
|
-
console.error(`Usage: <command> <command args>`);
|
|
14
|
-
const commands = Object.entries(this.commandManager.commands).filter(([name2, factory], index, commands2) => commands2.findIndex((it) => it[1] === factory) === index).map(([name2]) => name2).sort((a, b) => a.localeCompare(b));
|
|
15
|
-
const maxCommandNameLength = Math.max(...commands.map((it) => it.length));
|
|
16
|
-
for (let commandName of commands) {
|
|
17
|
-
const [, command] = this.commandManager.createCommand(commandName);
|
|
18
|
-
const configuration = command.getConfiguration();
|
|
19
|
-
const indent = " ";
|
|
20
|
-
console.error(
|
|
21
|
-
`${indent}${chalk.greenBright(
|
|
22
|
-
commandName.padEnd(maxCommandNameLength)
|
|
23
|
-
)}${indent}${configuration.getDescription()}`
|
|
24
|
-
);
|
|
25
|
-
if (name === "--help") {
|
|
26
|
-
const helpIndent = `${indent}${" ".repeat(maxCommandNameLength)}${indent}`;
|
|
27
|
-
const usage = configuration.getUsage({ format: "multiline", indent: helpIndent });
|
|
28
|
-
if (usage) {
|
|
29
|
-
console.error(chalk.green(usage));
|
|
30
|
-
} else {
|
|
31
|
-
console.error(`${helpIndent}${chalk.gray("No options")}`);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return process.exit(0);
|
|
36
|
-
}
|
|
37
|
-
return this.runCommandInternal(name, rest, true);
|
|
38
|
-
}
|
|
39
|
-
async runCommand(name, args) {
|
|
40
|
-
return this.runCommandInternal(name, args, false);
|
|
41
|
-
}
|
|
42
|
-
async runCommandInternal(name, args, showCommandName) {
|
|
43
|
-
const [fullName, command] = this.commandManager.createCommand(name);
|
|
44
|
-
if (args[0] === "--help" || args[0] === "-h") {
|
|
45
|
-
if (showCommandName) {
|
|
46
|
-
console.error(chalk.greenBright(fullName));
|
|
47
|
-
}
|
|
48
|
-
const configuration = command.getConfiguration();
|
|
49
|
-
const commandDescription = configuration.getDescription();
|
|
50
|
-
if (commandDescription) {
|
|
51
|
-
console.error(commandDescription);
|
|
52
|
-
}
|
|
53
|
-
const shortUsage = configuration.getUsage({ format: "short" });
|
|
54
|
-
if (shortUsage) {
|
|
55
|
-
console.error("\nUsage:");
|
|
56
|
-
console.error(chalk.green(shortUsage));
|
|
57
|
-
console.error("\nArguments and options:");
|
|
58
|
-
console.error(configuration.getUsage({ format: "multiline" }));
|
|
59
|
-
}
|
|
60
|
-
return process.exit(0);
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
await this.options.beforeRun?.({ command, args, name: fullName });
|
|
64
|
-
const result = await command.run(args);
|
|
65
|
-
return process.exit(result);
|
|
66
|
-
} catch (e) {
|
|
67
|
-
if (e instanceof InvalidInputError) {
|
|
68
|
-
console.error(chalk.bgRedBright.white(e.message));
|
|
69
|
-
const configuration = command.getConfiguration();
|
|
70
|
-
console.error(`${showCommandName ? chalk.greenBright(fullName) + " " : ""}${chalk.green(configuration.getUsage({ format: "line" }))}`);
|
|
71
|
-
return process.exit(1);
|
|
72
|
-
} else {
|
|
73
|
-
console.error(e);
|
|
74
|
-
return process.exit(2);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
export {
|
|
80
|
-
Application
|
|
81
|
-
};
|
|
82
|
-
//# sourceMappingURL=Application.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Application.js","sources":["../../../../../packages/cli-common/src/application/Application.ts"],"sourcesContent":["import { InvalidInputError } from './InputParser'\nimport { CommandManager } from './CommandManager'\nimport chalk from 'chalk'\nimport { Command } from './Command'\n\nexport class Application {\n\tconstructor(\n\t\tprivate readonly commandManager: CommandManager,\n\t\tprivate readonly applicationDescription: string,\n\t\tprivate readonly options: {\n\t\t\tbeforeRun?: (args: {command: Command<any, any>; name: string; args: string[]}) => void\n\t\t} = {},\n\t) {}\n\n\tasync run(args: string[]): Promise<void> {\n\t\tconst [name, ...rest] = args\n\t\tif (!name || name === '--help') {\n\t\t\tconsole.error(this.applicationDescription)\n\t\t\tconsole.error(`Usage: <command> <command args>`)\n\t\t\tconst commands = Object.entries(this.commandManager.commands)\n\t\t\t\t.filter(([name, factory], index, commands) => commands.findIndex(it => it[1] === factory) === index)\n\t\t\t\t.map(([name]) => name)\n\t\t\t\t.sort((a, b) => a.localeCompare(b))\n\n\t\t\tconst maxCommandNameLength = Math.max(...commands.map(it => it.length))\n\n\t\t\tfor (let commandName of commands) {\n\t\t\t\tconst [, command] = this.commandManager.createCommand(commandName)\n\t\t\t\tconst configuration = command.getConfiguration()\n\t\t\t\tconst indent = ' '\n\t\t\t\tconsole.error(\n\t\t\t\t\t`${indent}${chalk.greenBright(\n\t\t\t\t\t\tcommandName.padEnd(maxCommandNameLength),\n\t\t\t\t\t)}${indent}${configuration.getDescription()}`,\n\t\t\t\t)\n\t\t\t\tif (name === '--help') {\n\t\t\t\t\tconst helpIndent = `${indent}${' '.repeat(maxCommandNameLength)}${indent}`\n\t\t\t\t\tconst usage = configuration.getUsage({ format: 'multiline', indent: helpIndent })\n\t\t\t\t\tif (usage) {\n\t\t\t\t\t\tconsole.error(chalk.green(usage))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(`${helpIndent}${chalk.gray('No options')}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn process.exit(0)\n\t\t}\n\t\treturn this.runCommandInternal(name, rest, true)\n\t}\n\n\tpublic async runCommand(name: string, args: string[]) {\n\t\treturn this.runCommandInternal(name, args, false)\n\t}\n\n\tpublic async runCommandInternal(name: string, args: string[], showCommandName: boolean) {\n\t\tconst [fullName, command] = this.commandManager.createCommand(name)\n\n\t\tif (args[0] === '--help' || args[0] === '-h') {\n\t\t\tif (showCommandName) {\n\t\t\t\tconsole.error(chalk.greenBright(fullName))\n\t\t\t}\n\t\t\tconst configuration = command.getConfiguration()\n\t\t\tconst commandDescription = configuration.getDescription()\n\t\t\tif (commandDescription) {\n\t\t\t\tconsole.error(commandDescription)\n\t\t\t}\n\t\t\tconst shortUsage = configuration.getUsage({ format: 'short' })\n\t\t\tif (shortUsage) {\n\t\t\t\tconsole.error('\\nUsage:')\n\t\t\t\tconsole.error(chalk.green(shortUsage))\n\t\t\t\tconsole.error('\\nArguments and options:')\n\t\t\t\tconsole.error(configuration.getUsage({ format: 'multiline' }))\n\t\t\t}\n\n\t\t\treturn process.exit(0)\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.options.beforeRun?.({ command, args, name: fullName })\n\n\t\t\tconst result = await command.run(args)\n\t\t\treturn process.exit(result)\n\t\t} catch (e) {\n\t\t\tif (e instanceof InvalidInputError) {\n\t\t\t\tconsole.error(chalk.bgRedBright.white(e.message))\n\t\t\t\tconst configuration = command.getConfiguration()\n\t\t\t\tconsole.error(`${showCommandName ? chalk.greenBright(fullName) + ' ' : ''}${chalk.green(configuration.getUsage({ format: 'line' }))}`)\n\n\t\t\t\treturn process.exit(1)\n\t\t\t} else {\n\t\t\t\tconsole.error(e)\n\t\t\t\treturn process.exit(2)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["name","commands"],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
class ArgumentConfiguration {
|
|
4
|
-
constructor(options) {
|
|
5
|
-
this.options = options;
|
|
6
|
-
}
|
|
7
|
-
optional(optional = true) {
|
|
8
|
-
this.options.optional = optional;
|
|
9
|
-
return this;
|
|
10
|
-
}
|
|
11
|
-
variadic(variadic = true) {
|
|
12
|
-
this.options.variadic = variadic;
|
|
13
|
-
return this;
|
|
14
|
-
}
|
|
15
|
-
description(description) {
|
|
16
|
-
this.options.description = description;
|
|
17
|
-
return this;
|
|
18
|
-
}
|
|
19
|
-
validator(validator) {
|
|
20
|
-
this.options.validator = validator;
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.ArgumentConfiguration = ArgumentConfiguration;
|
|
25
|
-
//# sourceMappingURL=Argument.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Argument.cjs","sources":["../../../../../packages/cli-common/src/application/Argument.ts"],"sourcesContent":["export type Argument = {\n\tname: string\n\tdescription?: string\n\toptional: boolean\n\tvariadic: boolean\n\tvalidator?: (value: string) => boolean\n}\n\nexport class ArgumentConfiguration {\n\tconstructor(private readonly options: Argument) {}\n\n\tpublic optional(optional: boolean = true) {\n\t\tthis.options.optional = optional\n\t\treturn this\n\t}\n\n\tpublic variadic(variadic: boolean = true) {\n\t\tthis.options.variadic = variadic\n\t\treturn this\n\t}\n\n\tpublic description(description: string) {\n\t\tthis.options.description = description\n\t\treturn this\n\t}\n\n\tpublic validator(validator: (value: string) => boolean) {\n\t\tthis.options.validator = validator\n\t\treturn this\n\t}\n}\n"],"names":[],"mappings":";;AAQO,MAAM,sBAAsB;AAAA,EAClC,YAA6B,SAAmB;AAAnB,SAAA,UAAA;AAAA,EAAA;AAAA,EAEtB,SAAS,WAAoB,MAAM;AACzC,SAAK,QAAQ,WAAW;AACjB,WAAA;AAAA,EAAA;AAAA,EAGD,SAAS,WAAoB,MAAM;AACzC,SAAK,QAAQ,WAAW;AACjB,WAAA;AAAA,EAAA;AAAA,EAGD,YAAY,aAAqB;AACvC,SAAK,QAAQ,cAAc;AACpB,WAAA;AAAA,EAAA;AAAA,EAGD,UAAU,WAAuC;AACvD,SAAK,QAAQ,YAAY;AAClB,WAAA;AAAA,EAAA;AAET;;"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
class ArgumentConfiguration {
|
|
2
|
-
constructor(options) {
|
|
3
|
-
this.options = options;
|
|
4
|
-
}
|
|
5
|
-
optional(optional = true) {
|
|
6
|
-
this.options.optional = optional;
|
|
7
|
-
return this;
|
|
8
|
-
}
|
|
9
|
-
variadic(variadic = true) {
|
|
10
|
-
this.options.variadic = variadic;
|
|
11
|
-
return this;
|
|
12
|
-
}
|
|
13
|
-
description(description) {
|
|
14
|
-
this.options.description = description;
|
|
15
|
-
return this;
|
|
16
|
-
}
|
|
17
|
-
validator(validator) {
|
|
18
|
-
this.options.validator = validator;
|
|
19
|
-
return this;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
export {
|
|
23
|
-
ArgumentConfiguration
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=Argument.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Argument.js","sources":["../../../../../packages/cli-common/src/application/Argument.ts"],"sourcesContent":["export type Argument = {\n\tname: string\n\tdescription?: string\n\toptional: boolean\n\tvariadic: boolean\n\tvalidator?: (value: string) => boolean\n}\n\nexport class ArgumentConfiguration {\n\tconstructor(private readonly options: Argument) {}\n\n\tpublic optional(optional: boolean = true) {\n\t\tthis.options.optional = optional\n\t\treturn this\n\t}\n\n\tpublic variadic(variadic: boolean = true) {\n\t\tthis.options.variadic = variadic\n\t\treturn this\n\t}\n\n\tpublic description(description: string) {\n\t\tthis.options.description = description\n\t\treturn this\n\t}\n\n\tpublic validator(validator: (value: string) => boolean) {\n\t\tthis.options.validator = validator\n\t\treturn this\n\t}\n}\n"],"names":[],"mappings":"AAQO,MAAM,sBAAsB;AAAA,EAClC,YAA6B,SAAmB;AAAnB,SAAA,UAAA;AAAA,EAAA;AAAA,EAEtB,SAAS,WAAoB,MAAM;AACzC,SAAK,QAAQ,WAAW;AACjB,WAAA;AAAA,EAAA;AAAA,EAGD,SAAS,WAAoB,MAAM;AACzC,SAAK,QAAQ,WAAW;AACjB,WAAA;AAAA,EAAA;AAAA,EAGD,YAAY,aAAqB;AACvC,SAAK,QAAQ,cAAc;AACpB,WAAA;AAAA,EAAA;AAAA,EAGD,UAAU,WAAuC;AACvD,SAAK,QAAQ,YAAY;AAClB,WAAA;AAAA,EAAA;AAET;"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const CommandConfiguration = require("./CommandConfiguration.cjs");
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
|
|
7
|
-
class Command {
|
|
8
|
-
constructor() {
|
|
9
|
-
__publicField(this, "configuration");
|
|
10
|
-
}
|
|
11
|
-
getConfiguration() {
|
|
12
|
-
if (this.configuration === void 0) {
|
|
13
|
-
const configuration = new CommandConfiguration.CommandConfiguration();
|
|
14
|
-
this.configure(configuration);
|
|
15
|
-
configuration.validate();
|
|
16
|
-
this.configuration = configuration;
|
|
17
|
-
}
|
|
18
|
-
return this.configuration;
|
|
19
|
-
}
|
|
20
|
-
async run(args) {
|
|
21
|
-
const parser = this.getConfiguration().createParser();
|
|
22
|
-
const input = parser.parse(args);
|
|
23
|
-
const result = await this.execute(input);
|
|
24
|
-
return result || 0;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.Command = Command;
|
|
28
|
-
//# sourceMappingURL=Command.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Command.cjs","sources":["../../../../../packages/cli-common/src/application/Command.ts"],"sourcesContent":["import { CommandConfiguration } from './CommandConfiguration'\nimport { Arguments, Input, Options } from './Input'\n\nexport abstract class Command<Args extends Arguments, TOptions extends Options> {\n\tprivate configuration: CommandConfiguration<Args, TOptions> | undefined\n\n\tprotected abstract configure(configuration: CommandConfiguration<Args, TOptions>): void\n\n\tpublic getConfiguration(): CommandConfiguration<Args, TOptions> {\n\t\tif (this.configuration === undefined) {\n\t\t\tconst configuration = new CommandConfiguration()\n\t\t\tthis.configure(configuration)\n\t\t\tconfiguration.validate()\n\t\t\tthis.configuration = configuration\n\t\t}\n\t\treturn this.configuration\n\t}\n\n\tprotected abstract execute(input: Input<Args, TOptions>): Promise<void | number>\n\n\tpublic async run(args: string[]): Promise<number> {\n\t\tconst parser = this.getConfiguration().createParser()\n\t\tconst input = parser.parse<Args, TOptions>(args)\n\t\tconst result = await this.execute(input)\n\t\treturn result || 0\n\t}\n}\n"],"names":["CommandConfiguration"],"mappings":";;;;;;AAGO,MAAe,QAA0D;AAAA,EAAzE,cAAA;AACE,kBAAA,MAAA,eAAA;AAAA,EAAA;AAAA,EAID,mBAAyD;AAC3D,QAAA,KAAK,kBAAkB,QAAW;AAC/B,YAAA,gBAAgB,IAAIA,0CAAqB;AAC/C,WAAK,UAAU,aAAa;AAC5B,oBAAc,SAAS;AACvB,WAAK,gBAAgB;AAAA,IAAA;AAEtB,WAAO,KAAK;AAAA,EAAA;AAAA,EAKb,MAAa,IAAI,MAAiC;AACjD,UAAM,SAAS,KAAK,iBAAiB,EAAE,aAAa;AAC9C,UAAA,QAAQ,OAAO,MAAsB,IAAI;AAC/C,UAAM,SAAS,MAAM,KAAK,QAAQ,KAAK;AACvC,WAAO,UAAU;AAAA,EAAA;AAEnB;;"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { CommandConfiguration } from "./CommandConfiguration.js";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
|
|
5
|
-
class Command {
|
|
6
|
-
constructor() {
|
|
7
|
-
__publicField(this, "configuration");
|
|
8
|
-
}
|
|
9
|
-
getConfiguration() {
|
|
10
|
-
if (this.configuration === void 0) {
|
|
11
|
-
const configuration = new CommandConfiguration();
|
|
12
|
-
this.configure(configuration);
|
|
13
|
-
configuration.validate();
|
|
14
|
-
this.configuration = configuration;
|
|
15
|
-
}
|
|
16
|
-
return this.configuration;
|
|
17
|
-
}
|
|
18
|
-
async run(args) {
|
|
19
|
-
const parser = this.getConfiguration().createParser();
|
|
20
|
-
const input = parser.parse(args);
|
|
21
|
-
const result = await this.execute(input);
|
|
22
|
-
return result || 0;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export {
|
|
26
|
-
Command
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=Command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Command.js","sources":["../../../../../packages/cli-common/src/application/Command.ts"],"sourcesContent":["import { CommandConfiguration } from './CommandConfiguration'\nimport { Arguments, Input, Options } from './Input'\n\nexport abstract class Command<Args extends Arguments, TOptions extends Options> {\n\tprivate configuration: CommandConfiguration<Args, TOptions> | undefined\n\n\tprotected abstract configure(configuration: CommandConfiguration<Args, TOptions>): void\n\n\tpublic getConfiguration(): CommandConfiguration<Args, TOptions> {\n\t\tif (this.configuration === undefined) {\n\t\t\tconst configuration = new CommandConfiguration()\n\t\t\tthis.configure(configuration)\n\t\t\tconfiguration.validate()\n\t\t\tthis.configuration = configuration\n\t\t}\n\t\treturn this.configuration\n\t}\n\n\tprotected abstract execute(input: Input<Args, TOptions>): Promise<void | number>\n\n\tpublic async run(args: string[]): Promise<number> {\n\t\tconst parser = this.getConfiguration().createParser()\n\t\tconst input = parser.parse<Args, TOptions>(args)\n\t\tconst result = await this.execute(input)\n\t\treturn result || 0\n\t}\n}\n"],"names":[],"mappings":";;;;AAGO,MAAe,QAA0D;AAAA,EAAzE,cAAA;AACE,kBAAA,MAAA,eAAA;AAAA,EAAA;AAAA,EAID,mBAAyD;AAC3D,QAAA,KAAK,kBAAkB,QAAW;AAC/B,YAAA,gBAAgB,IAAI,qBAAqB;AAC/C,WAAK,UAAU,aAAa;AAC5B,oBAAc,SAAS;AACvB,WAAK,gBAAgB;AAAA,IAAA;AAEtB,WAAO,KAAK;AAAA,EAAA;AAAA,EAKb,MAAa,IAAI,MAAiC;AACjD,UAAM,SAAS,KAAK,iBAAiB,EAAE,aAAa;AAC9C,UAAA,QAAQ,OAAO,MAAsB,IAAI;AAC/C,UAAM,SAAS,MAAM,KAAK,QAAQ,KAAK;AACvC,WAAO,UAAU;AAAA,EAAA;AAEnB;"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const Argument = require("./Argument.cjs");
|
|
4
|
-
const Option = require("./Option.cjs");
|
|
5
|
-
const InputParser = require("./InputParser.cjs");
|
|
6
|
-
const UsageFormatter = require("./UsageFormatter.cjs");
|
|
7
|
-
var __defProp = Object.defineProperty;
|
|
8
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
10
|
-
class CommandConfiguration {
|
|
11
|
-
constructor() {
|
|
12
|
-
__publicField(this, "descriptionValue", "");
|
|
13
|
-
__publicField(this, "arguments", []);
|
|
14
|
-
__publicField(this, "options", []);
|
|
15
|
-
}
|
|
16
|
-
description(description) {
|
|
17
|
-
this.descriptionValue = description;
|
|
18
|
-
}
|
|
19
|
-
argument(name) {
|
|
20
|
-
const options = { name, optional: false, variadic: false };
|
|
21
|
-
this.arguments.push(options);
|
|
22
|
-
return new Argument.ArgumentConfiguration(options);
|
|
23
|
-
}
|
|
24
|
-
option(name) {
|
|
25
|
-
const option = { name, required: false, mode: Option.OptionMode.VALUE_NONE, deprecated: false };
|
|
26
|
-
this.options.push(option);
|
|
27
|
-
return new Option.OptionConfiguration(option);
|
|
28
|
-
}
|
|
29
|
-
validate() {
|
|
30
|
-
for (let argument of this.arguments) {
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
getDescription() {
|
|
34
|
-
return this.descriptionValue;
|
|
35
|
-
}
|
|
36
|
-
createParser() {
|
|
37
|
-
return new InputParser.InputParser(this.arguments, this.options);
|
|
38
|
-
}
|
|
39
|
-
getUsage(args = {}) {
|
|
40
|
-
return UsageFormatter.UsageFormatter.format(this.arguments, this.options, args);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.CommandConfiguration = CommandConfiguration;
|
|
44
|
-
//# sourceMappingURL=CommandConfiguration.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommandConfiguration.cjs","sources":["../../../../../packages/cli-common/src/application/CommandConfiguration.ts"],"sourcesContent":["import { Argument, ArgumentConfiguration } from './Argument'\nimport { Option, OptionConfiguration, OptionMode } from './Option'\nimport { InputParser } from './InputParser'\nimport { UsageFormat, UsageFormatter } from './UsageFormatter'\nimport { Arguments, Options } from './Input'\n\nexport class CommandConfiguration<Args extends Arguments, TOptions extends Options> {\n\tprivate descriptionValue: string = ''\n\n\tprivate arguments: Argument[] = []\n\tprivate options: Option[] = []\n\n\tpublic description(description: string) {\n\t\tthis.descriptionValue = description\n\t}\n\n\tpublic argument(name: Extract<keyof Args, string>): ArgumentConfiguration {\n\t\tconst options = { name, optional: false, variadic: false }\n\t\tthis.arguments.push(options)\n\t\treturn new ArgumentConfiguration(options)\n\t}\n\n\tpublic option(name: Extract<keyof TOptions, string>): OptionConfiguration {\n\t\tconst option: Option = { name, required: false, mode: OptionMode.VALUE_NONE, deprecated: false }\n\t\tthis.options.push(option)\n\t\treturn new OptionConfiguration(option)\n\t}\n\n\tpublic validate() {\n\t\tlet hasVariadic = false\n\t\tlet hasOptional = false\n\t\tfor (let argument of this.arguments) {\n\t\t\tif (hasOptional && !argument.optional) {\n\t\t\t\tthrow new InvalidConfigurationError(`Required argument ${argument.name} cannot follow an optional `)\n\t\t\t}\n\t\t\tif (hasVariadic) {\n\t\t\t\tthrow new InvalidConfigurationError(`A variadic argument must be the last`)\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getDescription(): string {\n\t\treturn this.descriptionValue\n\t}\n\n\tpublic createParser(): InputParser {\n\t\treturn new InputParser(this.arguments, this.options)\n\t}\n\n\tpublic getUsage(args: { format?: UsageFormat; indent?: string } = {}): string {\n\t\treturn UsageFormatter.format(this.arguments, this.options, args)\n\t}\n}\n\nexport class InvalidConfigurationError extends Error {}\n"],"names":["ArgumentConfiguration","OptionMode","OptionConfiguration","InputParser","UsageFormatter"],"mappings":";;;;;;;;;AAMO,MAAM,qBAAuE;AAAA,EAA7E,cAAA;AACN,kBAAA,MAAQ,oBAA2B,EAAA;AAEnC,kBAAA,MAAQ,aAAwB,EAAC;AACjC,kBAAA,MAAQ,WAAoB,EAAC;AAAA,EAAA;AAAA,EAEtB,YAAY,aAAqB;AACvC,SAAK,mBAAmB;AAAA,EAAA;AAAA,EAGlB,SAAS,MAA0D;AACzE,UAAM,UAAU,EAAE,MAAM,UAAU,OAAO,UAAU,MAAM;AACpD,SAAA,UAAU,KAAK,OAAO;AACpB,WAAA,IAAIA,+BAAsB,OAAO;AAAA,EAAA;AAAA,EAGlC,OAAO,MAA4D;AACnE,UAAA,SAAiB,EAAE,MAAM,UAAU,OAAO,MAAMC,kBAAW,YAAY,YAAY,MAAM;AAC1F,SAAA,QAAQ,KAAK,MAAM;AACjB,WAAA,IAAIC,2BAAoB,MAAM;AAAA,EAAA;AAAA,EAG/B,WAAW;AAGR,aAAA,YAAY,KAAK,WAAW;AAAA,IAMpC;AAAA,EACD;AAAA,EAGM,iBAAyB;AAC/B,WAAO,KAAK;AAAA,EAAA;AAAA,EAGN,eAA4B;AAClC,WAAO,IAAIC,YAAAA,YAAY,KAAK,WAAW,KAAK,OAAO;AAAA,EAAA;AAAA,EAG7C,SAAS,OAAkD,IAAY;AAC7E,WAAOC,eAAAA,eAAe,OAAO,KAAK,WAAW,KAAK,SAAS,IAAI;AAAA,EAAA;AAEjE;;"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { ArgumentConfiguration } from "./Argument.js";
|
|
2
|
-
import { OptionMode, OptionConfiguration } from "./Option.js";
|
|
3
|
-
import { InputParser } from "./InputParser.js";
|
|
4
|
-
import { UsageFormatter } from "./UsageFormatter.js";
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
8
|
-
class CommandConfiguration {
|
|
9
|
-
constructor() {
|
|
10
|
-
__publicField(this, "descriptionValue", "");
|
|
11
|
-
__publicField(this, "arguments", []);
|
|
12
|
-
__publicField(this, "options", []);
|
|
13
|
-
}
|
|
14
|
-
description(description) {
|
|
15
|
-
this.descriptionValue = description;
|
|
16
|
-
}
|
|
17
|
-
argument(name) {
|
|
18
|
-
const options = { name, optional: false, variadic: false };
|
|
19
|
-
this.arguments.push(options);
|
|
20
|
-
return new ArgumentConfiguration(options);
|
|
21
|
-
}
|
|
22
|
-
option(name) {
|
|
23
|
-
const option = { name, required: false, mode: OptionMode.VALUE_NONE, deprecated: false };
|
|
24
|
-
this.options.push(option);
|
|
25
|
-
return new OptionConfiguration(option);
|
|
26
|
-
}
|
|
27
|
-
validate() {
|
|
28
|
-
for (let argument of this.arguments) {
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
getDescription() {
|
|
32
|
-
return this.descriptionValue;
|
|
33
|
-
}
|
|
34
|
-
createParser() {
|
|
35
|
-
return new InputParser(this.arguments, this.options);
|
|
36
|
-
}
|
|
37
|
-
getUsage(args = {}) {
|
|
38
|
-
return UsageFormatter.format(this.arguments, this.options, args);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
export {
|
|
42
|
-
CommandConfiguration
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=CommandConfiguration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommandConfiguration.js","sources":["../../../../../packages/cli-common/src/application/CommandConfiguration.ts"],"sourcesContent":["import { Argument, ArgumentConfiguration } from './Argument'\nimport { Option, OptionConfiguration, OptionMode } from './Option'\nimport { InputParser } from './InputParser'\nimport { UsageFormat, UsageFormatter } from './UsageFormatter'\nimport { Arguments, Options } from './Input'\n\nexport class CommandConfiguration<Args extends Arguments, TOptions extends Options> {\n\tprivate descriptionValue: string = ''\n\n\tprivate arguments: Argument[] = []\n\tprivate options: Option[] = []\n\n\tpublic description(description: string) {\n\t\tthis.descriptionValue = description\n\t}\n\n\tpublic argument(name: Extract<keyof Args, string>): ArgumentConfiguration {\n\t\tconst options = { name, optional: false, variadic: false }\n\t\tthis.arguments.push(options)\n\t\treturn new ArgumentConfiguration(options)\n\t}\n\n\tpublic option(name: Extract<keyof TOptions, string>): OptionConfiguration {\n\t\tconst option: Option = { name, required: false, mode: OptionMode.VALUE_NONE, deprecated: false }\n\t\tthis.options.push(option)\n\t\treturn new OptionConfiguration(option)\n\t}\n\n\tpublic validate() {\n\t\tlet hasVariadic = false\n\t\tlet hasOptional = false\n\t\tfor (let argument of this.arguments) {\n\t\t\tif (hasOptional && !argument.optional) {\n\t\t\t\tthrow new InvalidConfigurationError(`Required argument ${argument.name} cannot follow an optional `)\n\t\t\t}\n\t\t\tif (hasVariadic) {\n\t\t\t\tthrow new InvalidConfigurationError(`A variadic argument must be the last`)\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getDescription(): string {\n\t\treturn this.descriptionValue\n\t}\n\n\tpublic createParser(): InputParser {\n\t\treturn new InputParser(this.arguments, this.options)\n\t}\n\n\tpublic getUsage(args: { format?: UsageFormat; indent?: string } = {}): string {\n\t\treturn UsageFormatter.format(this.arguments, this.options, args)\n\t}\n}\n\nexport class InvalidConfigurationError extends Error {}\n"],"names":[],"mappings":";;;;;;;AAMO,MAAM,qBAAuE;AAAA,EAA7E,cAAA;AACN,kBAAA,MAAQ,oBAA2B,EAAA;AAEnC,kBAAA,MAAQ,aAAwB,EAAC;AACjC,kBAAA,MAAQ,WAAoB,EAAC;AAAA,EAAA;AAAA,EAEtB,YAAY,aAAqB;AACvC,SAAK,mBAAmB;AAAA,EAAA;AAAA,EAGlB,SAAS,MAA0D;AACzE,UAAM,UAAU,EAAE,MAAM,UAAU,OAAO,UAAU,MAAM;AACpD,SAAA,UAAU,KAAK,OAAO;AACpB,WAAA,IAAI,sBAAsB,OAAO;AAAA,EAAA;AAAA,EAGlC,OAAO,MAA4D;AACnE,UAAA,SAAiB,EAAE,MAAM,UAAU,OAAO,MAAM,WAAW,YAAY,YAAY,MAAM;AAC1F,SAAA,QAAQ,KAAK,MAAM;AACjB,WAAA,IAAI,oBAAoB,MAAM;AAAA,EAAA;AAAA,EAG/B,WAAW;AAGR,aAAA,YAAY,KAAK,WAAW;AAAA,IAMpC;AAAA,EACD;AAAA,EAGM,iBAAyB;AAC/B,WAAO,KAAK;AAAA,EAAA;AAAA,EAGN,eAA4B;AAClC,WAAO,IAAI,YAAY,KAAK,WAAW,KAAK,OAAO;AAAA,EAAA;AAAA,EAG7C,SAAS,OAAkD,IAAY;AAC7E,WAAO,eAAe,OAAO,KAAK,WAAW,KAAK,SAAS,IAAI;AAAA,EAAA;AAEjE;"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const chalk = require("chalk");
|
|
4
|
-
class CommandManager {
|
|
5
|
-
constructor(commands) {
|
|
6
|
-
this.commands = commands;
|
|
7
|
-
}
|
|
8
|
-
createCommand(name) {
|
|
9
|
-
const fullName = this.findCommand(name);
|
|
10
|
-
const factory = this.commands[fullName];
|
|
11
|
-
const originalCommand = Object.entries(this.commands).find(([, it]) => it === factory);
|
|
12
|
-
if (!originalCommand) {
|
|
13
|
-
throw new Error("impl error");
|
|
14
|
-
}
|
|
15
|
-
if (originalCommand[0] !== fullName) {
|
|
16
|
-
console.warn(chalk.yellow(`Command name "${fullName}" is deprecated, use "${originalCommand[0]}" instead.`));
|
|
17
|
-
}
|
|
18
|
-
return [fullName, factory()];
|
|
19
|
-
}
|
|
20
|
-
findCommand(name) {
|
|
21
|
-
if (this.commands[name]) {
|
|
22
|
-
return name;
|
|
23
|
-
}
|
|
24
|
-
const pattern = new RegExp("^" + name.replace(/:/g, "\\w*\\:"));
|
|
25
|
-
const matchedCommands = Object.keys(this.commands).filter((it) => it.match(pattern));
|
|
26
|
-
if (matchedCommands.length === 1) {
|
|
27
|
-
return matchedCommands[0];
|
|
28
|
-
}
|
|
29
|
-
if (matchedCommands.length === 0) {
|
|
30
|
-
throw `Command ${name} not found.`;
|
|
31
|
-
}
|
|
32
|
-
throw `Command ${name} is ambiguous. Did you mean one of these?
|
|
33
|
-
- ` + matchedCommands.join("\n - ") + "\n";
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.CommandManager = CommandManager;
|
|
37
|
-
//# sourceMappingURL=CommandManager.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommandManager.cjs","sources":["../../../../../packages/cli-common/src/application/CommandManager.ts"],"sourcesContent":["import { Command } from './Command'\nimport chalk from 'chalk'\n\nexport type CommandFactoryList = { [command: string]: () => Command<any, any> }\n\nexport class CommandManager {\n\tconstructor(public readonly commands: CommandFactoryList) {}\n\n\tpublic createCommand(name: string): [string, Command<any, any>] {\n\t\tconst fullName = this.findCommand(name)\n\t\tconst factory = this.commands[fullName]\n\t\tconst originalCommand = Object.entries(this.commands).find(([, it]) => it === factory)\n\t\tif (!originalCommand) {\n\t\t\tthrow new Error('impl error')\n\t\t}\n\t\tif (originalCommand[0] !== fullName) {\n\t\t\tconsole.warn(chalk.yellow(`Command name \"${fullName}\" is deprecated, use \"${originalCommand[0]}\" instead.`))\n\t\t}\n\t\treturn [fullName, factory()]\n\t}\n\n\tprivate findCommand(name: string): string {\n\t\tif (this.commands[name]) {\n\t\t\treturn name\n\t\t}\n\t\tconst pattern = new RegExp('^' + name.replace(/:/g, '\\\\w*\\\\:'))\n\t\tconst matchedCommands = Object.keys(this.commands).filter(it => it.match(pattern))\n\t\tif (matchedCommands.length === 1) {\n\t\t\treturn matchedCommands[0]\n\t\t}\n\t\tif (matchedCommands.length === 0) {\n\t\t\tthrow `Command ${name} not found.`\n\t\t}\n\t\tthrow `Command ${name} is ambiguous. Did you mean one of these?\\n - ` + matchedCommands.join('\\n - ') + '\\n'\n\t}\n}\n"],"names":[],"mappings":";;;AAKO,MAAM,eAAe;AAAA,EAC3B,YAA4B,UAA8B;AAA9B,SAAA,WAAA;AAAA,EAAA;AAAA,EAErB,cAAc,MAA2C;AACzD,UAAA,WAAW,KAAK,YAAY,IAAI;AAChC,UAAA,UAAU,KAAK,SAAS,QAAQ;AACtC,UAAM,kBAAkB,OAAO,QAAQ,KAAK,QAAQ,EAAE,KAAK,CAAC,CAAG,EAAA,EAAE,MAAM,OAAO,OAAO;AACrF,QAAI,CAAC,iBAAiB;AACf,YAAA,IAAI,MAAM,YAAY;AAAA,IAAA;AAEzB,QAAA,gBAAgB,CAAC,MAAM,UAAU;AAC5B,cAAA,KAAK,MAAM,OAAO,iBAAiB,QAAQ,yBAAyB,gBAAgB,CAAC,CAAC,YAAY,CAAC;AAAA,IAAA;AAErG,WAAA,CAAC,UAAU,SAAS;AAAA,EAAA;AAAA,EAGpB,YAAY,MAAsB;AACrC,QAAA,KAAK,SAAS,IAAI,GAAG;AACjB,aAAA;AAAA,IAAA;AAEF,UAAA,UAAU,IAAI,OAAO,MAAM,KAAK,QAAQ,MAAM,SAAS,CAAC;AACxD,UAAA,kBAAkB,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAO,CAAM,OAAA,GAAG,MAAM,OAAO,CAAC;AAC7E,QAAA,gBAAgB,WAAW,GAAG;AACjC,aAAO,gBAAgB,CAAC;AAAA,IAAA;AAErB,QAAA,gBAAgB,WAAW,GAAG;AACjC,YAAM,WAAW,IAAI;AAAA,IAAA;AAEtB,UAAM,WAAW,IAAI;AAAA,OAAmD,gBAAgB,KAAK,OAAO,IAAI;AAAA,EAAA;AAE1G;;"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
class CommandManager {
|
|
3
|
-
constructor(commands) {
|
|
4
|
-
this.commands = commands;
|
|
5
|
-
}
|
|
6
|
-
createCommand(name) {
|
|
7
|
-
const fullName = this.findCommand(name);
|
|
8
|
-
const factory = this.commands[fullName];
|
|
9
|
-
const originalCommand = Object.entries(this.commands).find(([, it]) => it === factory);
|
|
10
|
-
if (!originalCommand) {
|
|
11
|
-
throw new Error("impl error");
|
|
12
|
-
}
|
|
13
|
-
if (originalCommand[0] !== fullName) {
|
|
14
|
-
console.warn(chalk.yellow(`Command name "${fullName}" is deprecated, use "${originalCommand[0]}" instead.`));
|
|
15
|
-
}
|
|
16
|
-
return [fullName, factory()];
|
|
17
|
-
}
|
|
18
|
-
findCommand(name) {
|
|
19
|
-
if (this.commands[name]) {
|
|
20
|
-
return name;
|
|
21
|
-
}
|
|
22
|
-
const pattern = new RegExp("^" + name.replace(/:/g, "\\w*\\:"));
|
|
23
|
-
const matchedCommands = Object.keys(this.commands).filter((it) => it.match(pattern));
|
|
24
|
-
if (matchedCommands.length === 1) {
|
|
25
|
-
return matchedCommands[0];
|
|
26
|
-
}
|
|
27
|
-
if (matchedCommands.length === 0) {
|
|
28
|
-
throw `Command ${name} not found.`;
|
|
29
|
-
}
|
|
30
|
-
throw `Command ${name} is ambiguous. Did you mean one of these?
|
|
31
|
-
- ` + matchedCommands.join("\n - ") + "\n";
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
export {
|
|
35
|
-
CommandManager
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=CommandManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommandManager.js","sources":["../../../../../packages/cli-common/src/application/CommandManager.ts"],"sourcesContent":["import { Command } from './Command'\nimport chalk from 'chalk'\n\nexport type CommandFactoryList = { [command: string]: () => Command<any, any> }\n\nexport class CommandManager {\n\tconstructor(public readonly commands: CommandFactoryList) {}\n\n\tpublic createCommand(name: string): [string, Command<any, any>] {\n\t\tconst fullName = this.findCommand(name)\n\t\tconst factory = this.commands[fullName]\n\t\tconst originalCommand = Object.entries(this.commands).find(([, it]) => it === factory)\n\t\tif (!originalCommand) {\n\t\t\tthrow new Error('impl error')\n\t\t}\n\t\tif (originalCommand[0] !== fullName) {\n\t\t\tconsole.warn(chalk.yellow(`Command name \"${fullName}\" is deprecated, use \"${originalCommand[0]}\" instead.`))\n\t\t}\n\t\treturn [fullName, factory()]\n\t}\n\n\tprivate findCommand(name: string): string {\n\t\tif (this.commands[name]) {\n\t\t\treturn name\n\t\t}\n\t\tconst pattern = new RegExp('^' + name.replace(/:/g, '\\\\w*\\\\:'))\n\t\tconst matchedCommands = Object.keys(this.commands).filter(it => it.match(pattern))\n\t\tif (matchedCommands.length === 1) {\n\t\t\treturn matchedCommands[0]\n\t\t}\n\t\tif (matchedCommands.length === 0) {\n\t\t\tthrow `Command ${name} not found.`\n\t\t}\n\t\tthrow `Command ${name} is ambiguous. Did you mean one of these?\\n - ` + matchedCommands.join('\\n - ') + '\\n'\n\t}\n}\n"],"names":[],"mappings":";AAKO,MAAM,eAAe;AAAA,EAC3B,YAA4B,UAA8B;AAA9B,SAAA,WAAA;AAAA,EAAA;AAAA,EAErB,cAAc,MAA2C;AACzD,UAAA,WAAW,KAAK,YAAY,IAAI;AAChC,UAAA,UAAU,KAAK,SAAS,QAAQ;AACtC,UAAM,kBAAkB,OAAO,QAAQ,KAAK,QAAQ,EAAE,KAAK,CAAC,CAAG,EAAA,EAAE,MAAM,OAAO,OAAO;AACrF,QAAI,CAAC,iBAAiB;AACf,YAAA,IAAI,MAAM,YAAY;AAAA,IAAA;AAEzB,QAAA,gBAAgB,CAAC,MAAM,UAAU;AAC5B,cAAA,KAAK,MAAM,OAAO,iBAAiB,QAAQ,yBAAyB,gBAAgB,CAAC,CAAC,YAAY,CAAC;AAAA,IAAA;AAErG,WAAA,CAAC,UAAU,SAAS;AAAA,EAAA;AAAA,EAGpB,YAAY,MAAsB;AACrC,QAAA,KAAK,SAAS,IAAI,GAAG;AACjB,aAAA;AAAA,IAAA;AAEF,UAAA,UAAU,IAAI,OAAO,MAAM,KAAK,QAAQ,MAAM,SAAS,CAAC;AACxD,UAAA,kBAAkB,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAO,CAAM,OAAA,GAAG,MAAM,OAAO,CAAC;AAC7E,QAAA,gBAAgB,WAAW,GAAG;AACjC,aAAO,gBAAgB,CAAC;AAAA,IAAA;AAErB,QAAA,gBAAgB,WAAW,GAAG;AACjC,YAAM,WAAW,IAAI;AAAA,IAAA;AAEtB,UAAM,WAAW,IAAI;AAAA,OAAmD,gBAAgB,KAAK,OAAO,IAAI;AAAA,EAAA;AAE1G;"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
class Input {
|
|
4
|
-
constructor(args, options) {
|
|
5
|
-
this.args = args;
|
|
6
|
-
this.options = options;
|
|
7
|
-
}
|
|
8
|
-
getOption(name) {
|
|
9
|
-
return this.options[name];
|
|
10
|
-
}
|
|
11
|
-
getArgument(name) {
|
|
12
|
-
return this.args[name];
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.Input = Input;
|
|
16
|
-
//# sourceMappingURL=Input.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Input.cjs","sources":["../../../../../packages/cli-common/src/application/Input.ts"],"sourcesContent":["export type Arguments = Record<string, string | string[] | undefined>\nexport type Options = Record<string, string | boolean | string[] | undefined>\n\nexport class Input<Args extends Arguments = Arguments, Opts extends Options = Options> {\n\tconstructor(private readonly args: Args, private readonly options: Opts) {}\n\n\tgetOption<Name extends keyof Opts>(name: Name): Opts[Name] {\n\t\treturn this.options[name]\n\t}\n\n\tgetArgument<Name extends keyof Args>(name: Name): Args[Name] {\n\t\treturn this.args[name]\n\t}\n}\n"],"names":[],"mappings":";;AAGO,MAAM,MAA0E;AAAA,EACtF,YAA6B,MAA6B,SAAe;AAA5C,SAAA,OAAA;AAA6B,SAAA,UAAA;AAAA,EAAA;AAAA,EAE1D,UAAmC,MAAwB;AACnD,WAAA,KAAK,QAAQ,IAAI;AAAA,EAAA;AAAA,EAGzB,YAAqC,MAAwB;AACrD,WAAA,KAAK,KAAK,IAAI;AAAA,EAAA;AAEvB;;"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
class Input {
|
|
2
|
-
constructor(args, options) {
|
|
3
|
-
this.args = args;
|
|
4
|
-
this.options = options;
|
|
5
|
-
}
|
|
6
|
-
getOption(name) {
|
|
7
|
-
return this.options[name];
|
|
8
|
-
}
|
|
9
|
-
getArgument(name) {
|
|
10
|
-
return this.args[name];
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
Input
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=Input.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sources":["../../../../../packages/cli-common/src/application/Input.ts"],"sourcesContent":["export type Arguments = Record<string, string | string[] | undefined>\nexport type Options = Record<string, string | boolean | string[] | undefined>\n\nexport class Input<Args extends Arguments = Arguments, Opts extends Options = Options> {\n\tconstructor(private readonly args: Args, private readonly options: Opts) {}\n\n\tgetOption<Name extends keyof Opts>(name: Name): Opts[Name] {\n\t\treturn this.options[name]\n\t}\n\n\tgetArgument<Name extends keyof Args>(name: Name): Args[Name] {\n\t\treturn this.args[name]\n\t}\n}\n"],"names":[],"mappings":"AAGO,MAAM,MAA0E;AAAA,EACtF,YAA6B,MAA6B,SAAe;AAA5C,SAAA,OAAA;AAA6B,SAAA,UAAA;AAAA,EAAA;AAAA,EAE1D,UAAmC,MAAwB;AACnD,WAAA,KAAK,QAAQ,IAAI;AAAA,EAAA;AAAA,EAGzB,YAAqC,MAAwB;AACrD,WAAA,KAAK,KAAK,IAAI;AAAA,EAAA;AAEvB;"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const Option = require("./Option.cjs");
|
|
4
|
-
const Input = require("./Input.cjs");
|
|
5
|
-
class InputParser {
|
|
6
|
-
constructor(_arguments, options) {
|
|
7
|
-
this._arguments = _arguments;
|
|
8
|
-
this.options = options;
|
|
9
|
-
}
|
|
10
|
-
parse(args) {
|
|
11
|
-
args = args.reduce((acc, arg) => [...acc, ...arg.startsWith("-") ? arg.split("=", 2) : [arg]], []);
|
|
12
|
-
let options = {};
|
|
13
|
-
let argumentValues = {};
|
|
14
|
-
let i = 0;
|
|
15
|
-
let argumentNumber = 0;
|
|
16
|
-
const variadicArg = this._arguments[this._arguments.length - 1]?.variadic ? this._arguments[this._arguments.length - 1] : void 0;
|
|
17
|
-
for (; i < args.length; i++) {
|
|
18
|
-
const value = this.tryParseValue(args[i]);
|
|
19
|
-
if (value === void 0) {
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
const argument = this._arguments[argumentNumber] || variadicArg;
|
|
23
|
-
if (!argument) {
|
|
24
|
-
throw new InvalidInputError(`Unresolved argument for value "${value}"`);
|
|
25
|
-
}
|
|
26
|
-
if (argument.validator && !argument.validator(value)) {
|
|
27
|
-
throw new InvalidInputError(`Invalid value "${value}" for argument ${argument.name}`);
|
|
28
|
-
}
|
|
29
|
-
if (argument.variadic) {
|
|
30
|
-
argumentValues[argument.name] = argumentValues[argument.name] || [];
|
|
31
|
-
argumentValues[argument.name].push(value);
|
|
32
|
-
} else {
|
|
33
|
-
argumentValues[argument.name] = value;
|
|
34
|
-
}
|
|
35
|
-
argumentNumber++;
|
|
36
|
-
}
|
|
37
|
-
for (; argumentNumber < this._arguments.length; argumentNumber++) {
|
|
38
|
-
if (!this._arguments[argumentNumber].optional) {
|
|
39
|
-
throw new InvalidInputError(`Argument ${this._arguments[argumentNumber].name} is required`);
|
|
40
|
-
} else {
|
|
41
|
-
argumentValues[this._arguments[argumentNumber].name] = void 0;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
for (; i < args.length; i++) {
|
|
45
|
-
let option;
|
|
46
|
-
if (args[i].startsWith("--")) {
|
|
47
|
-
option = this.options.find((it) => it.name === args[i].slice(2));
|
|
48
|
-
if (!option) {
|
|
49
|
-
throw new InvalidInputError(`Undefined option ${args[i]}`);
|
|
50
|
-
}
|
|
51
|
-
} else if (args[i].startsWith("-")) {
|
|
52
|
-
option = this.options.find((it) => it.shortcut === args[i].slice(1));
|
|
53
|
-
if (!option) {
|
|
54
|
-
throw new InvalidInputError(`Undefined option ${args[i]}`);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (!option) {
|
|
58
|
-
throw new InvalidInputError(`Unexpected value "${args[i]}"`);
|
|
59
|
-
}
|
|
60
|
-
if (option) {
|
|
61
|
-
if (option.deprecated) {
|
|
62
|
-
console.warn(`Option ${option.name} is deprecated.`);
|
|
63
|
-
}
|
|
64
|
-
if (option.mode === Option.OptionMode.VALUE_NONE) {
|
|
65
|
-
options[option.name] = true;
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
const value = this.tryParseValue(args[i + 1]);
|
|
69
|
-
if (value !== void 0) {
|
|
70
|
-
i++;
|
|
71
|
-
}
|
|
72
|
-
if (option.mode === Option.OptionMode.VALUE_ARRAY) {
|
|
73
|
-
if (value === void 0) {
|
|
74
|
-
throw new InvalidInputError(`Undefined value for option --${option.name}`);
|
|
75
|
-
}
|
|
76
|
-
options[option.name] = options[option.name] || [];
|
|
77
|
-
options[option.name].push(value);
|
|
78
|
-
} else if (option.mode === Option.OptionMode.VALUE_REQUIRED) {
|
|
79
|
-
if (value === void 0) {
|
|
80
|
-
throw new InvalidInputError(`Undefined value for option --${option.name}`);
|
|
81
|
-
}
|
|
82
|
-
options[option.name] = value;
|
|
83
|
-
} else if (option.mode === Option.OptionMode.VALUE_OPTIONAL) {
|
|
84
|
-
options[option.name] = value === void 0 ? true : value;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
for (let option of this.options) {
|
|
89
|
-
if (options[option.name] !== void 0) {
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
if (option.required) {
|
|
93
|
-
throw new InvalidInputError(`Option --${option.name} is required`);
|
|
94
|
-
} else {
|
|
95
|
-
options[option.name] = void 0;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return new Input.Input(argumentValues, options);
|
|
99
|
-
}
|
|
100
|
-
tryParseValue(arg) {
|
|
101
|
-
if (arg === void 0) {
|
|
102
|
-
return void 0;
|
|
103
|
-
}
|
|
104
|
-
if (arg.startsWith("-")) {
|
|
105
|
-
return void 0;
|
|
106
|
-
}
|
|
107
|
-
if (arg.startsWith("\\-")) {
|
|
108
|
-
return "-" + arg.slice(1);
|
|
109
|
-
}
|
|
110
|
-
return arg;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
class InvalidInputError extends Error {
|
|
114
|
-
}
|
|
115
|
-
exports.InputParser = InputParser;
|
|
116
|
-
exports.InvalidInputError = InvalidInputError;
|
|
117
|
-
//# sourceMappingURL=InputParser.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InputParser.cjs","sources":["../../../../../packages/cli-common/src/application/InputParser.ts"],"sourcesContent":["import { Argument } from './Argument'\nimport { Option, OptionMode } from './Option'\nimport { Arguments, Input, Options } from './Input'\n\nexport class InputParser {\n\tconstructor(private _arguments: Argument[], private options: Option[]) {}\n\n\tparse<Args extends Arguments, Opts extends Options>(args: string[]): Input<Args, Opts> {\n\t\targs = args.reduce<string[]>((acc, arg) => [...acc, ...(arg.startsWith('-') ? arg.split('=', 2) : [arg])], [])\n\t\tlet options: Options = {}\n\t\tlet argumentValues: Arguments = {}\n\n\t\tlet i = 0\n\t\tlet argumentNumber = 0\n\t\tconst variadicArg = this._arguments[this._arguments.length - 1]?.variadic\n\t\t\t? this._arguments[this._arguments.length - 1]\n\t\t\t: undefined\n\t\tfor (; i < args.length; i++) {\n\t\t\tconst value = this.tryParseValue(args[i])\n\t\t\tif (value === undefined) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tconst argument = this._arguments[argumentNumber] || variadicArg\n\t\t\tif (!argument) {\n\t\t\t\tthrow new InvalidInputError(`Unresolved argument for value \"${value}\"`)\n\t\t\t}\n\t\t\tif (argument.validator && !argument.validator(value)) {\n\t\t\t\tthrow new InvalidInputError(`Invalid value \"${value}\" for argument ${argument.name}`)\n\t\t\t}\n\t\t\tif (argument.variadic) {\n\t\t\t\targumentValues[argument.name] = argumentValues[argument.name] || []\n\t\t\t\t;(argumentValues[argument.name] as Array<string>).push(value)\n\t\t\t} else {\n\t\t\t\targumentValues[argument.name] = value\n\t\t\t}\n\t\t\targumentNumber++\n\t\t}\n\t\tfor (; argumentNumber < this._arguments.length; argumentNumber++) {\n\t\t\tif (!this._arguments[argumentNumber].optional) {\n\t\t\t\tthrow new InvalidInputError(`Argument ${this._arguments[argumentNumber].name} is required`)\n\t\t\t} else {\n\t\t\t\targumentValues[this._arguments[argumentNumber].name] = undefined\n\t\t\t}\n\t\t}\n\n\t\tfor (; i < args.length; i++) {\n\t\t\tlet option: Option | undefined\n\t\t\tif (args[i].startsWith('--')) {\n\t\t\t\toption = this.options.find(it => it.name === args[i].slice(2))\n\t\t\t\tif (!option) {\n\t\t\t\t\tthrow new InvalidInputError(`Undefined option ${args[i]}`)\n\t\t\t\t}\n\t\t\t} else if (args[i].startsWith('-')) {\n\t\t\t\toption = this.options.find(it => it.shortcut === args[i].slice(1))\n\t\t\t\tif (!option) {\n\t\t\t\t\tthrow new InvalidInputError(`Undefined option ${args[i]}`)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!option) {\n\t\t\t\tthrow new InvalidInputError(`Unexpected value \"${args[i]}\"`)\n\t\t\t}\n\t\t\tif (option) {\n\t\t\t\tif (option.deprecated) {\n\t\t\t\t\tconsole.warn(`Option ${option.name} is deprecated.`)\n\t\t\t\t}\n\t\t\t\tif (option.mode === OptionMode.VALUE_NONE) {\n\t\t\t\t\toptions[option.name] = true\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst value = this.tryParseValue(args[i + 1])\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\ti++\n\t\t\t\t}\n\t\t\t\tif (option.mode === OptionMode.VALUE_ARRAY) {\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tthrow new InvalidInputError(`Undefined value for option --${option.name}`)\n\t\t\t\t\t}\n\t\t\t\t\toptions[option.name] = options[option.name] || []\n\t\t\t\t\t;(options[option.name] as Array<string>).push(value)\n\t\t\t\t} else if (option.mode === OptionMode.VALUE_REQUIRED) {\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tthrow new InvalidInputError(`Undefined value for option --${option.name}`)\n\t\t\t\t\t}\n\t\t\t\t\toptions[option.name] = value\n\t\t\t\t} else if (option.mode === OptionMode.VALUE_OPTIONAL) {\n\t\t\t\t\toptions[option.name] = value === undefined ? true : value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (let option of this.options) {\n\t\t\tif (options[option.name] !== undefined) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (option.required) {\n\t\t\t\tthrow new InvalidInputError(`Option --${option.name} is required`)\n\t\t\t} else {\n\t\t\t\toptions[option.name] = undefined\n\t\t\t}\n\t\t}\n\n\t\treturn new Input<Args, Opts>(argumentValues as Args, options as Opts)\n\t}\n\n\tprivate tryParseValue(arg: string | undefined): string | undefined {\n\t\tif (arg === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (arg.startsWith('-')) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (arg.startsWith('\\\\-')) {\n\t\t\treturn '-' + arg.slice(1)\n\t\t}\n\t\treturn arg\n\t}\n}\n\nexport class InvalidInputError extends Error {}\n"],"names":["OptionMode","Input"],"mappings":"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"}
|