@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,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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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { OptionMode } from "./Option.js";
|
|
2
|
-
import { Input } from "./Input.js";
|
|
3
|
-
class InputParser {
|
|
4
|
-
constructor(_arguments, options) {
|
|
5
|
-
this._arguments = _arguments;
|
|
6
|
-
this.options = options;
|
|
7
|
-
}
|
|
8
|
-
parse(args) {
|
|
9
|
-
args = args.reduce((acc, arg) => [...acc, ...arg.startsWith("-") ? arg.split("=", 2) : [arg]], []);
|
|
10
|
-
let options = {};
|
|
11
|
-
let argumentValues = {};
|
|
12
|
-
let i = 0;
|
|
13
|
-
let argumentNumber = 0;
|
|
14
|
-
const variadicArg = this._arguments[this._arguments.length - 1]?.variadic ? this._arguments[this._arguments.length - 1] : void 0;
|
|
15
|
-
for (; i < args.length; i++) {
|
|
16
|
-
const value = this.tryParseValue(args[i]);
|
|
17
|
-
if (value === void 0) {
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
const argument = this._arguments[argumentNumber] || variadicArg;
|
|
21
|
-
if (!argument) {
|
|
22
|
-
throw new InvalidInputError(`Unresolved argument for value "${value}"`);
|
|
23
|
-
}
|
|
24
|
-
if (argument.validator && !argument.validator(value)) {
|
|
25
|
-
throw new InvalidInputError(`Invalid value "${value}" for argument ${argument.name}`);
|
|
26
|
-
}
|
|
27
|
-
if (argument.variadic) {
|
|
28
|
-
argumentValues[argument.name] = argumentValues[argument.name] || [];
|
|
29
|
-
argumentValues[argument.name].push(value);
|
|
30
|
-
} else {
|
|
31
|
-
argumentValues[argument.name] = value;
|
|
32
|
-
}
|
|
33
|
-
argumentNumber++;
|
|
34
|
-
}
|
|
35
|
-
for (; argumentNumber < this._arguments.length; argumentNumber++) {
|
|
36
|
-
if (!this._arguments[argumentNumber].optional) {
|
|
37
|
-
throw new InvalidInputError(`Argument ${this._arguments[argumentNumber].name} is required`);
|
|
38
|
-
} else {
|
|
39
|
-
argumentValues[this._arguments[argumentNumber].name] = void 0;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
for (; i < args.length; i++) {
|
|
43
|
-
let option;
|
|
44
|
-
if (args[i].startsWith("--")) {
|
|
45
|
-
option = this.options.find((it) => it.name === args[i].slice(2));
|
|
46
|
-
if (!option) {
|
|
47
|
-
throw new InvalidInputError(`Undefined option ${args[i]}`);
|
|
48
|
-
}
|
|
49
|
-
} else if (args[i].startsWith("-")) {
|
|
50
|
-
option = this.options.find((it) => it.shortcut === args[i].slice(1));
|
|
51
|
-
if (!option) {
|
|
52
|
-
throw new InvalidInputError(`Undefined option ${args[i]}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
if (!option) {
|
|
56
|
-
throw new InvalidInputError(`Unexpected value "${args[i]}"`);
|
|
57
|
-
}
|
|
58
|
-
if (option) {
|
|
59
|
-
if (option.deprecated) {
|
|
60
|
-
console.warn(`Option ${option.name} is deprecated.`);
|
|
61
|
-
}
|
|
62
|
-
if (option.mode === OptionMode.VALUE_NONE) {
|
|
63
|
-
options[option.name] = true;
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
const value = this.tryParseValue(args[i + 1]);
|
|
67
|
-
if (value !== void 0) {
|
|
68
|
-
i++;
|
|
69
|
-
}
|
|
70
|
-
if (option.mode === OptionMode.VALUE_ARRAY) {
|
|
71
|
-
if (value === void 0) {
|
|
72
|
-
throw new InvalidInputError(`Undefined value for option --${option.name}`);
|
|
73
|
-
}
|
|
74
|
-
options[option.name] = options[option.name] || [];
|
|
75
|
-
options[option.name].push(value);
|
|
76
|
-
} else if (option.mode === OptionMode.VALUE_REQUIRED) {
|
|
77
|
-
if (value === void 0) {
|
|
78
|
-
throw new InvalidInputError(`Undefined value for option --${option.name}`);
|
|
79
|
-
}
|
|
80
|
-
options[option.name] = value;
|
|
81
|
-
} else if (option.mode === OptionMode.VALUE_OPTIONAL) {
|
|
82
|
-
options[option.name] = value === void 0 ? true : value;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
for (let option of this.options) {
|
|
87
|
-
if (options[option.name] !== void 0) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
if (option.required) {
|
|
91
|
-
throw new InvalidInputError(`Option --${option.name} is required`);
|
|
92
|
-
} else {
|
|
93
|
-
options[option.name] = void 0;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return new Input(argumentValues, options);
|
|
97
|
-
}
|
|
98
|
-
tryParseValue(arg) {
|
|
99
|
-
if (arg === void 0) {
|
|
100
|
-
return void 0;
|
|
101
|
-
}
|
|
102
|
-
if (arg.startsWith("-")) {
|
|
103
|
-
return void 0;
|
|
104
|
-
}
|
|
105
|
-
if (arg.startsWith("\\-")) {
|
|
106
|
-
return "-" + arg.slice(1);
|
|
107
|
-
}
|
|
108
|
-
return arg;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
class InvalidInputError extends Error {
|
|
112
|
-
}
|
|
113
|
-
export {
|
|
114
|
-
InputParser,
|
|
115
|
-
InvalidInputError
|
|
116
|
-
};
|
|
117
|
-
//# sourceMappingURL=InputParser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InputParser.js","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":[],"mappings":";;AAIO,MAAM,YAAY;AAAA,EACxB,YAAoB,YAAgC,SAAmB;AAAnD,SAAA,aAAA;AAAgC,SAAA,UAAA;AAAA,EAAA;AAAA,EAEpD,MAAoD,MAAmC;AAC/E,WAAA,KAAK,OAAiB,CAAC,KAAK,QAAQ,CAAC,GAAG,KAAK,GAAI,IAAI,WAAW,GAAG,IAAI,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAE,GAAG,EAAE;AAC7G,QAAI,UAAmB,CAAC;AACxB,QAAI,iBAA4B,CAAC;AAEjC,QAAI,IAAI;AACR,QAAI,iBAAiB;AACrB,UAAM,cAAc,KAAK,WAAW,KAAK,WAAW,SAAS,CAAC,GAAG,WAC9D,KAAK,WAAW,KAAK,WAAW,SAAS,CAAC,IAC1C;AACI,WAAA,IAAI,KAAK,QAAQ,KAAK;AAC5B,YAAM,QAAQ,KAAK,cAAc,KAAK,CAAC,CAAC;AACxC,UAAI,UAAU,QAAW;AACxB;AAAA,MAAA;AAED,YAAM,WAAW,KAAK,WAAW,cAAc,KAAK;AACpD,UAAI,CAAC,UAAU;AACd,cAAM,IAAI,kBAAkB,kCAAkC,KAAK,GAAG;AAAA,MAAA;AAEvE,UAAI,SAAS,aAAa,CAAC,SAAS,UAAU,KAAK,GAAG;AACrD,cAAM,IAAI,kBAAkB,kBAAkB,KAAK,kBAAkB,SAAS,IAAI,EAAE;AAAA,MAAA;AAErF,UAAI,SAAS,UAAU;AACtB,uBAAe,SAAS,IAAI,IAAI,eAAe,SAAS,IAAI,KAAK,CAAC;AAChE,uBAAe,SAAS,IAAI,EAAoB,KAAK,KAAK;AAAA,MAAA,OACtD;AACS,uBAAA,SAAS,IAAI,IAAI;AAAA,MAAA;AAEjC;AAAA,IAAA;AAED,WAAO,iBAAiB,KAAK,WAAW,QAAQ,kBAAkB;AACjE,UAAI,CAAC,KAAK,WAAW,cAAc,EAAE,UAAU;AACxC,cAAA,IAAI,kBAAkB,YAAY,KAAK,WAAW,cAAc,EAAE,IAAI,cAAc;AAAA,MAAA,OACpF;AACN,uBAAe,KAAK,WAAW,cAAc,EAAE,IAAI,IAAI;AAAA,MAAA;AAAA,IACxD;AAGM,WAAA,IAAI,KAAK,QAAQ,KAAK;AACxB,UAAA;AACJ,UAAI,KAAK,CAAC,EAAE,WAAW,IAAI,GAAG;AACpB,iBAAA,KAAK,QAAQ,KAAK,CAAM,OAAA,GAAG,SAAS,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7D,YAAI,CAAC,QAAQ;AACZ,gBAAM,IAAI,kBAAkB,oBAAoB,KAAK,CAAC,CAAC,EAAE;AAAA,QAAA;AAAA,iBAEhD,KAAK,CAAC,EAAE,WAAW,GAAG,GAAG;AAC1B,iBAAA,KAAK,QAAQ,KAAK,CAAM,OAAA,GAAG,aAAa,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,YAAI,CAAC,QAAQ;AACZ,gBAAM,IAAI,kBAAkB,oBAAoB,KAAK,CAAC,CAAC,EAAE;AAAA,QAAA;AAAA,MAC1D;AAED,UAAI,CAAC,QAAQ;AACZ,cAAM,IAAI,kBAAkB,qBAAqB,KAAK,CAAC,CAAC,GAAG;AAAA,MAAA;AAE5D,UAAI,QAAQ;AACX,YAAI,OAAO,YAAY;AACtB,kBAAQ,KAAK,UAAU,OAAO,IAAI,iBAAiB;AAAA,QAAA;AAEhD,YAAA,OAAO,SAAS,WAAW,YAAY;AAClC,kBAAA,OAAO,IAAI,IAAI;AACvB;AAAA,QAAA;AAED,cAAM,QAAQ,KAAK,cAAc,KAAK,IAAI,CAAC,CAAC;AAC5C,YAAI,UAAU,QAAW;AACxB;AAAA,QAAA;AAEG,YAAA,OAAO,SAAS,WAAW,aAAa;AAC3C,cAAI,UAAU,QAAW;AACxB,kBAAM,IAAI,kBAAkB,gCAAgC,OAAO,IAAI,EAAE;AAAA,UAAA;AAE1E,kBAAQ,OAAO,IAAI,IAAI,QAAQ,OAAO,IAAI,KAAK,CAAC;AAC9C,kBAAQ,OAAO,IAAI,EAAoB,KAAK,KAAK;AAAA,QACzC,WAAA,OAAO,SAAS,WAAW,gBAAgB;AACrD,cAAI,UAAU,QAAW;AACxB,kBAAM,IAAI,kBAAkB,gCAAgC,OAAO,IAAI,EAAE;AAAA,UAAA;AAElE,kBAAA,OAAO,IAAI,IAAI;AAAA,QACb,WAAA,OAAO,SAAS,WAAW,gBAAgB;AACrD,kBAAQ,OAAO,IAAI,IAAI,UAAU,SAAY,OAAO;AAAA,QAAA;AAAA,MACrD;AAAA,IACD;AAGQ,aAAA,UAAU,KAAK,SAAS;AAChC,UAAI,QAAQ,OAAO,IAAI,MAAM,QAAW;AACvC;AAAA,MAAA;AAED,UAAI,OAAO,UAAU;AACpB,cAAM,IAAI,kBAAkB,YAAY,OAAO,IAAI,cAAc;AAAA,MAAA,OAC3D;AACE,gBAAA,OAAO,IAAI,IAAI;AAAA,MAAA;AAAA,IACxB;AAGM,WAAA,IAAI,MAAkB,gBAAwB,OAAe;AAAA,EAAA;AAAA,EAG7D,cAAc,KAA6C;AAClE,QAAI,QAAQ,QAAW;AACf,aAAA;AAAA,IAAA;AAEJ,QAAA,IAAI,WAAW,GAAG,GAAG;AACjB,aAAA;AAAA,IAAA;AAEJ,QAAA,IAAI,WAAW,KAAK,GAAG;AACnB,aAAA,MAAM,IAAI,MAAM,CAAC;AAAA,IAAA;AAElB,WAAA;AAAA,EAAA;AAET;AAEO,MAAM,0BAA0B,MAAM;AAAC;"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
var OptionMode = /* @__PURE__ */ ((OptionMode2) => {
|
|
4
|
-
OptionMode2["VALUE_NONE"] = "value_none";
|
|
5
|
-
OptionMode2["VALUE_OPTIONAL"] = "value_optional";
|
|
6
|
-
OptionMode2["VALUE_REQUIRED"] = "value_required";
|
|
7
|
-
OptionMode2["VALUE_ARRAY"] = "value_array";
|
|
8
|
-
return OptionMode2;
|
|
9
|
-
})(OptionMode || {});
|
|
10
|
-
class OptionConfiguration {
|
|
11
|
-
constructor(option) {
|
|
12
|
-
this.option = option;
|
|
13
|
-
}
|
|
14
|
-
shortcut(shortcut) {
|
|
15
|
-
this.option.shortcut = shortcut;
|
|
16
|
-
return this;
|
|
17
|
-
}
|
|
18
|
-
description(description) {
|
|
19
|
-
this.option.description = description;
|
|
20
|
-
return this;
|
|
21
|
-
}
|
|
22
|
-
required(required = true) {
|
|
23
|
-
this.option.required = required;
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
|
-
valueRequired() {
|
|
27
|
-
this.option.mode = "value_required";
|
|
28
|
-
return this;
|
|
29
|
-
}
|
|
30
|
-
valueNone() {
|
|
31
|
-
this.option.mode = "value_none";
|
|
32
|
-
return this;
|
|
33
|
-
}
|
|
34
|
-
valueOptional() {
|
|
35
|
-
this.option.mode = "value_optional";
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
valueArray() {
|
|
39
|
-
this.option.mode = "value_array";
|
|
40
|
-
return this;
|
|
41
|
-
}
|
|
42
|
-
deprecated() {
|
|
43
|
-
this.option.deprecated = true;
|
|
44
|
-
return this;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.OptionConfiguration = OptionConfiguration;
|
|
48
|
-
exports.OptionMode = OptionMode;
|
|
49
|
-
//# sourceMappingURL=Option.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Option.cjs","sources":["../../../../../packages/cli-common/src/application/Option.ts"],"sourcesContent":["export type Option = {\n\tname: string\n\tdescription?: string\n\tshortcut?: string\n\trequired: boolean\n\tdeprecated: boolean\n\tmode: OptionMode\n}\n\nexport enum OptionMode {\n\tVALUE_NONE = 'value_none',\n\tVALUE_OPTIONAL = 'value_optional',\n\tVALUE_REQUIRED = 'value_required',\n\tVALUE_ARRAY = 'value_array',\n}\n\nexport class OptionConfiguration {\n\tconstructor(private readonly option: Option) {}\n\n\tpublic shortcut(shortcut: string) {\n\t\tthis.option.shortcut = shortcut\n\t\treturn this\n\t}\n\n\tpublic description(description: string) {\n\t\tthis.option.description = description\n\t\treturn this\n\t}\n\n\tpublic required(required: boolean = true) {\n\t\tthis.option.required = required\n\t\treturn this\n\t}\n\n\tpublic valueRequired() {\n\t\tthis.option.mode = OptionMode.VALUE_REQUIRED\n\t\treturn this\n\t}\n\n\tpublic valueNone() {\n\t\tthis.option.mode = OptionMode.VALUE_NONE\n\t\treturn this\n\t}\n\n\tpublic valueOptional() {\n\t\tthis.option.mode = OptionMode.VALUE_OPTIONAL\n\t\treturn this\n\t}\n\n\tpublic valueArray() {\n\t\tthis.option.mode = OptionMode.VALUE_ARRAY\n\t\treturn this\n\t}\n\n\tpublic deprecated() {\n\t\tthis.option.deprecated = true\n\t\treturn this\n\t}\n}\n"],"names":["OptionMode"],"mappings":";;AASY,IAAA,+BAAAA,gBAAL;AACNA,cAAA,YAAa,IAAA;AACbA,cAAA,gBAAiB,IAAA;AACjBA,cAAA,gBAAiB,IAAA;AACjBA,cAAA,aAAc,IAAA;AAJHA,SAAAA;AAAA,GAAA,cAAA,CAAA,CAAA;AAOL,MAAM,oBAAoB;AAAA,EAChC,YAA6B,QAAgB;AAAhB,SAAA,SAAA;AAAA,EAAA;AAAA,EAEtB,SAAS,UAAkB;AACjC,SAAK,OAAO,WAAW;AAChB,WAAA;AAAA,EAAA;AAAA,EAGD,YAAY,aAAqB;AACvC,SAAK,OAAO,cAAc;AACnB,WAAA;AAAA,EAAA;AAAA,EAGD,SAAS,WAAoB,MAAM;AACzC,SAAK,OAAO,WAAW;AAChB,WAAA;AAAA,EAAA;AAAA,EAGD,gBAAgB;AACtB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EAAA;AAAA,EAGD,YAAY;AAClB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EAAA;AAAA,EAGD,gBAAgB;AACtB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EAAA;AAAA,EAGD,aAAa;AACnB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EAAA;AAAA,EAGD,aAAa;AACnB,SAAK,OAAO,aAAa;AAClB,WAAA;AAAA,EAAA;AAET;;;"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
var OptionMode = /* @__PURE__ */ ((OptionMode2) => {
|
|
2
|
-
OptionMode2["VALUE_NONE"] = "value_none";
|
|
3
|
-
OptionMode2["VALUE_OPTIONAL"] = "value_optional";
|
|
4
|
-
OptionMode2["VALUE_REQUIRED"] = "value_required";
|
|
5
|
-
OptionMode2["VALUE_ARRAY"] = "value_array";
|
|
6
|
-
return OptionMode2;
|
|
7
|
-
})(OptionMode || {});
|
|
8
|
-
class OptionConfiguration {
|
|
9
|
-
constructor(option) {
|
|
10
|
-
this.option = option;
|
|
11
|
-
}
|
|
12
|
-
shortcut(shortcut) {
|
|
13
|
-
this.option.shortcut = shortcut;
|
|
14
|
-
return this;
|
|
15
|
-
}
|
|
16
|
-
description(description) {
|
|
17
|
-
this.option.description = description;
|
|
18
|
-
return this;
|
|
19
|
-
}
|
|
20
|
-
required(required = true) {
|
|
21
|
-
this.option.required = required;
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
valueRequired() {
|
|
25
|
-
this.option.mode = "value_required";
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
valueNone() {
|
|
29
|
-
this.option.mode = "value_none";
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
valueOptional() {
|
|
33
|
-
this.option.mode = "value_optional";
|
|
34
|
-
return this;
|
|
35
|
-
}
|
|
36
|
-
valueArray() {
|
|
37
|
-
this.option.mode = "value_array";
|
|
38
|
-
return this;
|
|
39
|
-
}
|
|
40
|
-
deprecated() {
|
|
41
|
-
this.option.deprecated = true;
|
|
42
|
-
return this;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
export {
|
|
46
|
-
OptionConfiguration,
|
|
47
|
-
OptionMode
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=Option.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Option.js","sources":["../../../../../packages/cli-common/src/application/Option.ts"],"sourcesContent":["export type Option = {\n\tname: string\n\tdescription?: string\n\tshortcut?: string\n\trequired: boolean\n\tdeprecated: boolean\n\tmode: OptionMode\n}\n\nexport enum OptionMode {\n\tVALUE_NONE = 'value_none',\n\tVALUE_OPTIONAL = 'value_optional',\n\tVALUE_REQUIRED = 'value_required',\n\tVALUE_ARRAY = 'value_array',\n}\n\nexport class OptionConfiguration {\n\tconstructor(private readonly option: Option) {}\n\n\tpublic shortcut(shortcut: string) {\n\t\tthis.option.shortcut = shortcut\n\t\treturn this\n\t}\n\n\tpublic description(description: string) {\n\t\tthis.option.description = description\n\t\treturn this\n\t}\n\n\tpublic required(required: boolean = true) {\n\t\tthis.option.required = required\n\t\treturn this\n\t}\n\n\tpublic valueRequired() {\n\t\tthis.option.mode = OptionMode.VALUE_REQUIRED\n\t\treturn this\n\t}\n\n\tpublic valueNone() {\n\t\tthis.option.mode = OptionMode.VALUE_NONE\n\t\treturn this\n\t}\n\n\tpublic valueOptional() {\n\t\tthis.option.mode = OptionMode.VALUE_OPTIONAL\n\t\treturn this\n\t}\n\n\tpublic valueArray() {\n\t\tthis.option.mode = OptionMode.VALUE_ARRAY\n\t\treturn this\n\t}\n\n\tpublic deprecated() {\n\t\tthis.option.deprecated = true\n\t\treturn this\n\t}\n}\n"],"names":["OptionMode"],"mappings":"AASY,IAAA,+BAAAA,gBAAL;AACNA,cAAA,YAAa,IAAA;AACbA,cAAA,gBAAiB,IAAA;AACjBA,cAAA,gBAAiB,IAAA;AACjBA,cAAA,aAAc,IAAA;AAJHA,SAAAA;AAAA,GAAA,cAAA,CAAA,CAAA;AAOL,MAAM,oBAAoB;AAAA,EAChC,YAA6B,QAAgB;AAAhB,SAAA,SAAA;AAAA,EAAA;AAAA,EAEtB,SAAS,UAAkB;AACjC,SAAK,OAAO,WAAW;AAChB,WAAA;AAAA,EAAA;AAAA,EAGD,YAAY,aAAqB;AACvC,SAAK,OAAO,cAAc;AACnB,WAAA;AAAA,EAAA;AAAA,EAGD,SAAS,WAAoB,MAAM;AACzC,SAAK,OAAO,WAAW;AAChB,WAAA;AAAA,EAAA;AAAA,EAGD,gBAAgB;AACtB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EAAA;AAAA,EAGD,YAAY;AAClB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EAAA;AAAA,EAGD,gBAAgB;AACtB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EAAA;AAAA,EAGD,aAAa;AACnB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EAAA;AAAA,EAGD,aAAa;AACnB,SAAK,OAAO,aAAa;AAClB,WAAA;AAAA,EAAA;AAET;"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const Option = require("./Option.cjs");
|
|
4
|
-
const assertNever = require("./assertNever.cjs");
|
|
5
|
-
class UsageFormatter {
|
|
6
|
-
static format(args, options, { format, indent }) {
|
|
7
|
-
let parts = [];
|
|
8
|
-
format ?? (format = "short");
|
|
9
|
-
indent ?? (indent = " ");
|
|
10
|
-
const isShort = format === "short";
|
|
11
|
-
for (let arg of args) {
|
|
12
|
-
const name = arg.name;
|
|
13
|
-
const argDescription = !isShort && arg.description ? ` (${arg.description})` : "";
|
|
14
|
-
if (arg.variadic) {
|
|
15
|
-
parts.push(`[...${name}${argDescription}]`);
|
|
16
|
-
} else if (arg.optional) {
|
|
17
|
-
parts.push(`[${name}${argDescription}]`);
|
|
18
|
-
} else {
|
|
19
|
-
parts.push(`<${name}${argDescription}>`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
for (let opt of options) {
|
|
23
|
-
if (opt.deprecated) {
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
const name = `--${opt.name}` + (!isShort && opt.shortcut ? `|-${opt.shortcut}` : "");
|
|
27
|
-
let valueDescription;
|
|
28
|
-
switch (opt.mode) {
|
|
29
|
-
case Option.OptionMode.VALUE_ARRAY:
|
|
30
|
-
case Option.OptionMode.VALUE_REQUIRED:
|
|
31
|
-
valueDescription = " <value>";
|
|
32
|
-
break;
|
|
33
|
-
case Option.OptionMode.VALUE_OPTIONAL:
|
|
34
|
-
valueDescription = " [value]";
|
|
35
|
-
break;
|
|
36
|
-
case Option.OptionMode.VALUE_NONE:
|
|
37
|
-
valueDescription = "";
|
|
38
|
-
break;
|
|
39
|
-
default:
|
|
40
|
-
assertNever.assertNever(opt.mode);
|
|
41
|
-
}
|
|
42
|
-
let optionDescription = `${name}${valueDescription}`;
|
|
43
|
-
if (opt.mode === Option.OptionMode.VALUE_ARRAY) {
|
|
44
|
-
optionDescription = `${optionDescription} [... ${optionDescription}]`;
|
|
45
|
-
}
|
|
46
|
-
if (!isShort && opt.description) {
|
|
47
|
-
optionDescription += ` (${opt.description})`;
|
|
48
|
-
}
|
|
49
|
-
if (!opt.required) {
|
|
50
|
-
optionDescription = `[${optionDescription}]`;
|
|
51
|
-
}
|
|
52
|
-
parts.push(optionDescription);
|
|
53
|
-
}
|
|
54
|
-
if (format === "multiline") {
|
|
55
|
-
return parts.map((it) => `${indent}${it}`).join("\n");
|
|
56
|
-
}
|
|
57
|
-
return parts.join(" ");
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
exports.UsageFormatter = UsageFormatter;
|
|
61
|
-
//# sourceMappingURL=UsageFormatter.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UsageFormatter.cjs","sources":["../../../../../packages/cli-common/src/application/UsageFormatter.ts"],"sourcesContent":["import { Argument } from './Argument'\nimport { Option, OptionMode } from './Option'\nimport { assertNever } from './assertNever'\n\nexport type UsageFormat = 'line' | 'short' | 'multiline'\nexport type UsageFormatOptions = { format?: UsageFormat; indent?: string }\n\nexport class UsageFormatter {\n\tpublic static format(args: Argument[], options: Option[], { format, indent }: UsageFormatOptions): string {\n\t\tlet parts = []\n\t\tformat ??= 'short'\n\t\tindent ??= ' '\n\t\tconst isShort = format === 'short'\n\t\tfor (let arg of args) {\n\t\t\tconst name = arg.name\n\t\t\tconst argDescription = !isShort && arg.description ? ` (${arg.description})` : ''\n\t\t\tif (arg.variadic) {\n\t\t\t\tparts.push(`[...${name}${argDescription}]`)\n\t\t\t} else if (arg.optional) {\n\t\t\t\tparts.push(`[${name}${argDescription}]`)\n\t\t\t} else {\n\t\t\t\tparts.push(`<${name}${argDescription}>`)\n\t\t\t}\n\t\t}\n\t\tfor (let opt of options) {\n\t\t\tif (opt.deprecated) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst name = `--${opt.name}` + (!isShort && opt.shortcut ? `|-${opt.shortcut}` : '')\n\t\t\tlet valueDescription\n\t\t\tswitch (opt.mode) {\n\t\t\t\tcase OptionMode.VALUE_ARRAY:\n\t\t\t\tcase OptionMode.VALUE_REQUIRED:\n\t\t\t\t\tvalueDescription = ' <value>'\n\t\t\t\t\tbreak\n\t\t\t\tcase OptionMode.VALUE_OPTIONAL:\n\t\t\t\t\tvalueDescription = ' [value]'\n\t\t\t\t\tbreak\n\t\t\t\tcase OptionMode.VALUE_NONE:\n\t\t\t\t\tvalueDescription = ''\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tassertNever(opt.mode)\n\t\t\t}\n\t\t\tlet optionDescription = `${name}${valueDescription}`\n\t\t\tif (opt.mode === OptionMode.VALUE_ARRAY) {\n\t\t\t\toptionDescription = `${optionDescription} [... ${optionDescription}]`\n\t\t\t}\n\t\t\tif (!isShort && opt.description) {\n\t\t\t\toptionDescription += ` (${opt.description})`\n\t\t\t}\n\t\t\tif (!opt.required) {\n\t\t\t\toptionDescription = `[${optionDescription}]`\n\t\t\t}\n\t\t\tparts.push(optionDescription)\n\t\t}\n\t\tif (format === 'multiline') {\n\t\t\treturn parts.map(it => `${indent}${it}`).join('\\n')\n\t\t}\n\t\treturn parts.join(' ')\n\t}\n}\n"],"names":["OptionMode","assertNever"],"mappings":";;;;AAOO,MAAM,eAAe;AAAA,EAC3B,OAAc,OAAO,MAAkB,SAAmB,EAAE,QAAQ,UAAsC;AACzG,QAAI,QAAQ,CAAC;AACF,eAAA,SAAA;AACA,eAAA,SAAA;AACX,UAAM,UAAU,WAAW;AAC3B,aAAS,OAAO,MAAM;AACrB,YAAM,OAAO,IAAI;AACX,YAAA,iBAAiB,CAAC,WAAW,IAAI,cAAc,KAAK,IAAI,WAAW,MAAM;AAC/E,UAAI,IAAI,UAAU;AACjB,cAAM,KAAK,OAAO,IAAI,GAAG,cAAc,GAAG;AAAA,MAAA,WAChC,IAAI,UAAU;AACxB,cAAM,KAAK,IAAI,IAAI,GAAG,cAAc,GAAG;AAAA,MAAA,OACjC;AACN,cAAM,KAAK,IAAI,IAAI,GAAG,cAAc,GAAG;AAAA,MAAA;AAAA,IACxC;AAED,aAAS,OAAO,SAAS;AACxB,UAAI,IAAI,YAAY;AACnB;AAAA,MAAA;AAED,YAAM,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,WAAW,KAAK,IAAI,QAAQ,KAAK;AAC7E,UAAA;AACJ,cAAQ,IAAI,MAAM;AAAA,QACjB,KAAKA,OAAW,WAAA;AAAA,QAChB,KAAKA,OAAW,WAAA;AACI,6BAAA;AACnB;AAAA,QACD,KAAKA,OAAW,WAAA;AACI,6BAAA;AACnB;AAAA,QACD,KAAKA,OAAW,WAAA;AACI,6BAAA;AACnB;AAAA,QACD;AACCC,sBAAA,YAAY,IAAI,IAAI;AAAA,MAAA;AAEtB,UAAI,oBAAoB,GAAG,IAAI,GAAG,gBAAgB;AAC9C,UAAA,IAAI,SAASD,OAAA,WAAW,aAAa;AACpB,4BAAA,GAAG,iBAAiB,SAAS,iBAAiB;AAAA,MAAA;AAE/D,UAAA,CAAC,WAAW,IAAI,aAAa;AACX,6BAAA,KAAK,IAAI,WAAW;AAAA,MAAA;AAEtC,UAAA,CAAC,IAAI,UAAU;AAClB,4BAAoB,IAAI,iBAAiB;AAAA,MAAA;AAE1C,YAAM,KAAK,iBAAiB;AAAA,IAAA;AAE7B,QAAI,WAAW,aAAa;AACpB,aAAA,MAAM,IAAI,CAAA,OAAM,GAAG,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,IAAI;AAAA,IAAA;AAE5C,WAAA,MAAM,KAAK,GAAG;AAAA,EAAA;AAEvB;;"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { OptionMode } from "./Option.js";
|
|
2
|
-
import { assertNever } from "./assertNever.js";
|
|
3
|
-
class UsageFormatter {
|
|
4
|
-
static format(args, options, { format, indent }) {
|
|
5
|
-
let parts = [];
|
|
6
|
-
format ?? (format = "short");
|
|
7
|
-
indent ?? (indent = " ");
|
|
8
|
-
const isShort = format === "short";
|
|
9
|
-
for (let arg of args) {
|
|
10
|
-
const name = arg.name;
|
|
11
|
-
const argDescription = !isShort && arg.description ? ` (${arg.description})` : "";
|
|
12
|
-
if (arg.variadic) {
|
|
13
|
-
parts.push(`[...${name}${argDescription}]`);
|
|
14
|
-
} else if (arg.optional) {
|
|
15
|
-
parts.push(`[${name}${argDescription}]`);
|
|
16
|
-
} else {
|
|
17
|
-
parts.push(`<${name}${argDescription}>`);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
for (let opt of options) {
|
|
21
|
-
if (opt.deprecated) {
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
const name = `--${opt.name}` + (!isShort && opt.shortcut ? `|-${opt.shortcut}` : "");
|
|
25
|
-
let valueDescription;
|
|
26
|
-
switch (opt.mode) {
|
|
27
|
-
case OptionMode.VALUE_ARRAY:
|
|
28
|
-
case OptionMode.VALUE_REQUIRED:
|
|
29
|
-
valueDescription = " <value>";
|
|
30
|
-
break;
|
|
31
|
-
case OptionMode.VALUE_OPTIONAL:
|
|
32
|
-
valueDescription = " [value]";
|
|
33
|
-
break;
|
|
34
|
-
case OptionMode.VALUE_NONE:
|
|
35
|
-
valueDescription = "";
|
|
36
|
-
break;
|
|
37
|
-
default:
|
|
38
|
-
assertNever(opt.mode);
|
|
39
|
-
}
|
|
40
|
-
let optionDescription = `${name}${valueDescription}`;
|
|
41
|
-
if (opt.mode === OptionMode.VALUE_ARRAY) {
|
|
42
|
-
optionDescription = `${optionDescription} [... ${optionDescription}]`;
|
|
43
|
-
}
|
|
44
|
-
if (!isShort && opt.description) {
|
|
45
|
-
optionDescription += ` (${opt.description})`;
|
|
46
|
-
}
|
|
47
|
-
if (!opt.required) {
|
|
48
|
-
optionDescription = `[${optionDescription}]`;
|
|
49
|
-
}
|
|
50
|
-
parts.push(optionDescription);
|
|
51
|
-
}
|
|
52
|
-
if (format === "multiline") {
|
|
53
|
-
return parts.map((it) => `${indent}${it}`).join("\n");
|
|
54
|
-
}
|
|
55
|
-
return parts.join(" ");
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
export {
|
|
59
|
-
UsageFormatter
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=UsageFormatter.js.map
|