@contember/cli-common 1.4.0-rc.8 → 2.0.0-alpha.8
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/dist/development/index.cjs +28 -0
- package/dist/development/index.cjs.map +1 -0
- package/dist/development/index.js +28 -0
- package/dist/development/index.js.map +1 -0
- package/dist/development/src/application/Application.cjs +82 -0
- package/dist/development/src/application/Application.cjs.map +1 -0
- package/dist/development/src/application/Application.js +82 -0
- package/dist/development/src/application/Application.js.map +1 -0
- package/dist/development/src/application/Argument.cjs +25 -0
- package/dist/development/src/application/Argument.cjs.map +1 -0
- package/dist/development/src/application/Argument.js +25 -0
- package/dist/development/src/application/Argument.js.map +1 -0
- package/dist/development/src/application/Command.cjs +28 -0
- package/dist/development/src/application/Command.cjs.map +1 -0
- package/dist/development/src/application/Command.js +28 -0
- package/dist/development/src/application/Command.js.map +1 -0
- package/dist/development/src/application/CommandConfiguration.cjs +44 -0
- package/dist/development/src/application/CommandConfiguration.cjs.map +1 -0
- package/dist/development/src/application/CommandConfiguration.js +44 -0
- package/dist/development/src/application/CommandConfiguration.js.map +1 -0
- package/dist/development/src/application/CommandManager.cjs +37 -0
- package/dist/development/src/application/CommandManager.cjs.map +1 -0
- package/dist/development/src/application/CommandManager.js +37 -0
- package/dist/development/src/application/CommandManager.js.map +1 -0
- package/dist/development/src/application/Input.cjs +16 -0
- package/dist/development/src/application/Input.cjs.map +1 -0
- package/dist/development/src/application/Input.js +16 -0
- package/dist/development/src/application/Input.js.map +1 -0
- package/dist/development/src/application/InputParser.cjs +117 -0
- package/dist/development/src/application/InputParser.cjs.map +1 -0
- package/dist/development/src/application/InputParser.js +117 -0
- package/dist/development/src/application/InputParser.js.map +1 -0
- package/dist/development/src/application/Option.cjs +49 -0
- package/dist/development/src/application/Option.cjs.map +1 -0
- package/dist/development/src/application/Option.js +49 -0
- package/dist/development/src/application/Option.js.map +1 -0
- package/dist/development/src/application/UsageFormatter.cjs +61 -0
- package/dist/development/src/application/UsageFormatter.cjs.map +1 -0
- package/dist/development/src/application/UsageFormatter.js +61 -0
- package/dist/development/src/application/UsageFormatter.js.map +1 -0
- package/dist/development/src/application/assertNever.cjs +7 -0
- package/dist/development/src/application/assertNever.cjs.map +1 -0
- package/dist/development/src/application/assertNever.js +7 -0
- package/dist/development/src/application/assertNever.js.map +1 -0
- package/dist/development/src/npm/CommandRunner.cjs +59 -0
- package/dist/development/src/npm/CommandRunner.cjs.map +1 -0
- package/dist/development/src/npm/CommandRunner.js +59 -0
- package/dist/development/src/npm/CommandRunner.js.map +1 -0
- package/dist/development/src/npm/Package.cjs +11 -0
- package/dist/development/src/npm/Package.cjs.map +1 -0
- package/dist/development/src/npm/Package.js +11 -0
- package/dist/development/src/npm/Package.js.map +1 -0
- package/dist/development/src/npm/PackageWorkspace.cjs +79 -0
- package/dist/development/src/npm/PackageWorkspace.cjs.map +1 -0
- package/dist/development/src/npm/PackageWorkspace.js +79 -0
- package/dist/development/src/npm/PackageWorkspace.js.map +1 -0
- package/dist/development/src/npm/PackageWorkspaceResolver.cjs +48 -0
- package/dist/development/src/npm/PackageWorkspaceResolver.cjs.map +1 -0
- package/dist/development/src/npm/PackageWorkspaceResolver.js +48 -0
- package/dist/development/src/npm/PackageWorkspaceResolver.js.map +1 -0
- package/dist/development/src/npm/packageManagers/Npm.cjs +34 -0
- package/dist/development/src/npm/packageManagers/Npm.cjs.map +1 -0
- package/dist/development/src/npm/packageManagers/Npm.js +34 -0
- package/dist/development/src/npm/packageManagers/Npm.js.map +1 -0
- package/dist/development/src/npm/packageManagers/PackageManagerHelpers.cjs +32 -0
- package/dist/development/src/npm/packageManagers/PackageManagerHelpers.cjs.map +1 -0
- package/dist/development/src/npm/packageManagers/PackageManagerHelpers.js +32 -0
- package/dist/development/src/npm/packageManagers/PackageManagerHelpers.js.map +1 -0
- package/dist/development/src/npm/packageManagers/Pnpm.cjs +39 -0
- package/dist/development/src/npm/packageManagers/Pnpm.cjs.map +1 -0
- package/dist/development/src/npm/packageManagers/Pnpm.js +39 -0
- package/dist/development/src/npm/packageManagers/Pnpm.js.map +1 -0
- package/dist/development/src/npm/packageManagers/Yarn.cjs +34 -0
- package/dist/development/src/npm/packageManagers/Yarn.cjs.map +1 -0
- package/dist/development/src/npm/packageManagers/Yarn.js +34 -0
- package/dist/development/src/npm/packageManagers/Yarn.js.map +1 -0
- package/dist/development/src/npm/packageManagers/YarnClassic.cjs +35 -0
- package/dist/development/src/npm/packageManagers/YarnClassic.cjs.map +1 -0
- package/dist/development/src/npm/packageManagers/YarnClassic.js +35 -0
- package/dist/development/src/npm/packageManagers/YarnClassic.js.map +1 -0
- package/dist/production/index.cjs +28 -0
- package/dist/production/index.cjs.map +1 -0
- package/dist/production/index.js +28 -0
- package/dist/production/index.js.map +1 -0
- package/dist/production/src/application/Application.cjs +82 -0
- package/dist/production/src/application/Application.cjs.map +1 -0
- package/dist/production/src/application/Application.js +82 -0
- package/dist/production/src/application/Application.js.map +1 -0
- package/dist/production/src/application/Argument.cjs +25 -0
- package/dist/production/src/application/Argument.cjs.map +1 -0
- package/dist/production/src/application/Argument.js +25 -0
- package/dist/production/src/application/Argument.js.map +1 -0
- package/dist/production/src/application/Command.cjs +28 -0
- package/dist/production/src/application/Command.cjs.map +1 -0
- package/dist/production/src/application/Command.js +28 -0
- package/dist/production/src/application/Command.js.map +1 -0
- package/dist/production/src/application/CommandConfiguration.cjs +44 -0
- package/dist/production/src/application/CommandConfiguration.cjs.map +1 -0
- package/dist/production/src/application/CommandConfiguration.js +44 -0
- package/dist/production/src/application/CommandConfiguration.js.map +1 -0
- package/dist/production/src/application/CommandManager.cjs +37 -0
- package/dist/production/src/application/CommandManager.cjs.map +1 -0
- package/dist/production/src/application/CommandManager.js +37 -0
- package/dist/production/src/application/CommandManager.js.map +1 -0
- package/dist/production/src/application/Input.cjs +16 -0
- package/dist/production/src/application/Input.cjs.map +1 -0
- package/dist/production/src/application/Input.js +16 -0
- package/dist/production/src/application/Input.js.map +1 -0
- package/dist/production/src/application/InputParser.cjs +117 -0
- package/dist/production/src/application/InputParser.cjs.map +1 -0
- package/dist/production/src/application/InputParser.js +117 -0
- package/dist/production/src/application/InputParser.js.map +1 -0
- package/dist/production/src/application/Option.cjs +49 -0
- package/dist/production/src/application/Option.cjs.map +1 -0
- package/dist/production/src/application/Option.js +49 -0
- package/dist/production/src/application/Option.js.map +1 -0
- package/dist/production/src/application/UsageFormatter.cjs +61 -0
- package/dist/production/src/application/UsageFormatter.cjs.map +1 -0
- package/dist/production/src/application/UsageFormatter.js +61 -0
- package/dist/production/src/application/UsageFormatter.js.map +1 -0
- package/dist/production/src/application/assertNever.cjs +7 -0
- package/dist/production/src/application/assertNever.cjs.map +1 -0
- package/dist/production/src/application/assertNever.js +7 -0
- package/dist/production/src/application/assertNever.js.map +1 -0
- package/dist/production/src/npm/CommandRunner.cjs +59 -0
- package/dist/production/src/npm/CommandRunner.cjs.map +1 -0
- package/dist/production/src/npm/CommandRunner.js +59 -0
- package/dist/production/src/npm/CommandRunner.js.map +1 -0
- package/dist/production/src/npm/Package.cjs +11 -0
- package/dist/production/src/npm/Package.cjs.map +1 -0
- package/dist/production/src/npm/Package.js +11 -0
- package/dist/production/src/npm/Package.js.map +1 -0
- package/dist/production/src/npm/PackageWorkspace.cjs +79 -0
- package/dist/production/src/npm/PackageWorkspace.cjs.map +1 -0
- package/dist/production/src/npm/PackageWorkspace.js +79 -0
- package/dist/production/src/npm/PackageWorkspace.js.map +1 -0
- package/dist/production/src/npm/PackageWorkspaceResolver.cjs +48 -0
- package/dist/production/src/npm/PackageWorkspaceResolver.cjs.map +1 -0
- package/dist/production/src/npm/PackageWorkspaceResolver.js +48 -0
- package/dist/production/src/npm/PackageWorkspaceResolver.js.map +1 -0
- package/dist/production/src/npm/packageManagers/Npm.cjs +34 -0
- package/dist/production/src/npm/packageManagers/Npm.cjs.map +1 -0
- package/dist/production/src/npm/packageManagers/Npm.js +34 -0
- package/dist/production/src/npm/packageManagers/Npm.js.map +1 -0
- package/dist/production/src/npm/packageManagers/PackageManagerHelpers.cjs +32 -0
- package/dist/production/src/npm/packageManagers/PackageManagerHelpers.cjs.map +1 -0
- package/dist/production/src/npm/packageManagers/PackageManagerHelpers.js +32 -0
- package/dist/production/src/npm/packageManagers/PackageManagerHelpers.js.map +1 -0
- package/dist/production/src/npm/packageManagers/Pnpm.cjs +39 -0
- package/dist/production/src/npm/packageManagers/Pnpm.cjs.map +1 -0
- package/dist/production/src/npm/packageManagers/Pnpm.js +39 -0
- package/dist/production/src/npm/packageManagers/Pnpm.js.map +1 -0
- package/dist/production/src/npm/packageManagers/Yarn.cjs +34 -0
- package/dist/production/src/npm/packageManagers/Yarn.cjs.map +1 -0
- package/dist/production/src/npm/packageManagers/Yarn.js +34 -0
- package/dist/production/src/npm/packageManagers/Yarn.js.map +1 -0
- package/dist/production/src/npm/packageManagers/YarnClassic.cjs +35 -0
- package/dist/production/src/npm/packageManagers/YarnClassic.cjs.map +1 -0
- package/dist/production/src/npm/packageManagers/YarnClassic.js +35 -0
- package/dist/production/src/npm/packageManagers/YarnClassic.js.map +1 -0
- package/dist/{src → types}/application/index.d.ts +0 -1
- package/dist/{src → types}/application/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{src/utils/commands.d.ts → types/npm/CommandRunner.d.ts} +11 -10
- package/dist/types/npm/CommandRunner.d.ts.map +1 -0
- package/dist/types/npm/FileSystem.d.ts +7 -0
- package/dist/types/npm/FileSystem.d.ts.map +1 -0
- package/dist/{src → types}/npm/PackageWorkspace.d.ts +3 -10
- package/dist/types/npm/PackageWorkspace.d.ts.map +1 -0
- package/dist/types/npm/PackageWorkspaceResolver.d.ts +13 -0
- package/dist/types/npm/PackageWorkspaceResolver.d.ts.map +1 -0
- package/dist/types/npm/index.d.ts +8 -0
- package/dist/types/npm/index.d.ts.map +1 -0
- package/dist/{src → types}/npm/packageManagers/Npm.d.ts +5 -3
- package/dist/types/npm/packageManagers/Npm.d.ts.map +1 -0
- package/dist/{src → types}/npm/packageManagers/PackageManagerHelpers.d.ts +3 -3
- package/dist/types/npm/packageManagers/PackageManagerHelpers.d.ts.map +1 -0
- package/dist/{src → types}/npm/packageManagers/Pnpm.d.ts +5 -3
- package/dist/types/npm/packageManagers/Pnpm.d.ts.map +1 -0
- package/dist/{src → types}/npm/packageManagers/Yarn.d.ts +5 -3
- package/dist/types/npm/packageManagers/Yarn.d.ts.map +1 -0
- package/dist/{src → types}/npm/packageManagers/YarnClassic.d.ts +5 -3
- package/dist/types/npm/packageManagers/YarnClassic.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +22 -12
- package/src/application/index.ts +0 -1
- package/src/index.ts +2 -2
- package/src/npm/CommandRunner.ts +69 -0
- package/src/npm/FileSystem.ts +7 -0
- package/src/npm/PackageWorkspace.ts +4 -48
- package/src/npm/PackageWorkspaceResolver.ts +60 -0
- package/src/npm/index.ts +6 -0
- package/src/npm/packageManagers/Npm.ts +7 -6
- package/src/npm/packageManagers/PackageManagerHelpers.ts +10 -6
- package/src/npm/packageManagers/Pnpm.ts +11 -7
- package/src/npm/packageManagers/Yarn.ts +7 -6
- package/src/npm/packageManagers/YarnClassic.ts +7 -6
- package/src/tsconfig.json +1 -1
- package/tsconfig.settings.json +1 -1
- package/dist/src/application/Application.js +0 -89
- package/dist/src/application/Application.js.map +0 -1
- package/dist/src/application/Argument.js +0 -26
- package/dist/src/application/Argument.js.map +0 -1
- package/dist/src/application/Command.js +0 -23
- package/dist/src/application/Command.js.map +0 -1
- package/dist/src/application/CommandConfiguration.js +0 -53
- package/dist/src/application/CommandConfiguration.js.map +0 -1
- package/dist/src/application/CommandManager.js +0 -40
- package/dist/src/application/CommandManager.js.map +0 -1
- package/dist/src/application/Input.js +0 -17
- package/dist/src/application/Input.js.map +0 -1
- package/dist/src/application/InputParser.js +0 -127
- package/dist/src/application/InputParser.js.map +0 -1
- package/dist/src/application/Option.js +0 -49
- package/dist/src/application/Option.js.map +0 -1
- package/dist/src/application/UsageFormatter.js +0 -64
- package/dist/src/application/UsageFormatter.js.map +0 -1
- package/dist/src/application/assertNever.js +0 -8
- package/dist/src/application/assertNever.js.map +0 -1
- package/dist/src/application/env.d.ts +0 -8
- package/dist/src/application/env.d.ts.map +0 -1
- package/dist/src/application/env.js +0 -14
- package/dist/src/application/env.js.map +0 -1
- package/dist/src/application/index.js +0 -28
- package/dist/src/application/index.js.map +0 -1
- package/dist/src/index.d.ts +0 -4
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -26
- package/dist/src/index.js.map +0 -1
- package/dist/src/npm/FsManager.d.ts +0 -9
- package/dist/src/npm/FsManager.d.ts.map +0 -1
- package/dist/src/npm/FsManager.js +0 -41
- package/dist/src/npm/FsManager.js.map +0 -1
- package/dist/src/npm/Package.js +0 -12
- package/dist/src/npm/Package.js.map +0 -1
- package/dist/src/npm/PackageJson.js +0 -3
- package/dist/src/npm/PackageJson.js.map +0 -1
- package/dist/src/npm/PackageWorkspace.d.ts.map +0 -1
- package/dist/src/npm/PackageWorkspace.js +0 -124
- package/dist/src/npm/PackageWorkspace.js.map +0 -1
- package/dist/src/npm/index.d.ts +0 -2
- package/dist/src/npm/index.d.ts.map +0 -1
- package/dist/src/npm/index.js +0 -18
- package/dist/src/npm/index.js.map +0 -1
- package/dist/src/npm/packageManagers/Npm.d.ts.map +0 -1
- package/dist/src/npm/packageManagers/Npm.js +0 -35
- package/dist/src/npm/packageManagers/Npm.js.map +0 -1
- package/dist/src/npm/packageManagers/PackageManager.js +0 -3
- package/dist/src/npm/packageManagers/PackageManager.js.map +0 -1
- package/dist/src/npm/packageManagers/PackageManagerHelpers.d.ts.map +0 -1
- package/dist/src/npm/packageManagers/PackageManagerHelpers.js +0 -30
- package/dist/src/npm/packageManagers/PackageManagerHelpers.js.map +0 -1
- package/dist/src/npm/packageManagers/Pnpm.d.ts.map +0 -1
- package/dist/src/npm/packageManagers/Pnpm.js +0 -37
- package/dist/src/npm/packageManagers/Pnpm.js.map +0 -1
- package/dist/src/npm/packageManagers/Yarn.d.ts.map +0 -1
- package/dist/src/npm/packageManagers/Yarn.js +0 -36
- package/dist/src/npm/packageManagers/Yarn.js.map +0 -1
- package/dist/src/npm/packageManagers/YarnClassic.d.ts.map +0 -1
- package/dist/src/npm/packageManagers/YarnClassic.js +0 -36
- package/dist/src/npm/packageManagers/YarnClassic.js.map +0 -1
- package/dist/src/pathUtils.d.ts +0 -3
- package/dist/src/pathUtils.d.ts.map +0 -1
- package/dist/src/pathUtils.js +0 -7
- package/dist/src/pathUtils.js.map +0 -1
- package/dist/src/tsconfig.tsbuildinfo +0 -1
- package/dist/src/utils/PathMapping.d.ts +0 -5
- package/dist/src/utils/PathMapping.d.ts.map +0 -1
- package/dist/src/utils/PathMapping.js +0 -35
- package/dist/src/utils/PathMapping.js.map +0 -1
- package/dist/src/utils/Project.d.ts +0 -12
- package/dist/src/utils/Project.d.ts.map +0 -1
- package/dist/src/utils/Project.js +0 -51
- package/dist/src/utils/Project.js.map +0 -1
- package/dist/src/utils/ProjectManager.d.ts +0 -16
- package/dist/src/utils/ProjectManager.d.ts.map +0 -1
- package/dist/src/utils/ProjectManager.js +0 -71
- package/dist/src/utils/ProjectManager.js.map +0 -1
- package/dist/src/utils/Workspace.d.ts +0 -24
- package/dist/src/utils/Workspace.d.ts.map +0 -1
- package/dist/src/utils/Workspace.js +0 -59
- package/dist/src/utils/Workspace.js.map +0 -1
- package/dist/src/utils/commands.d.ts.map +0 -1
- package/dist/src/utils/commands.js +0 -57
- package/dist/src/utils/commands.js.map +0 -1
- package/dist/src/utils/fs.d.ts +0 -5
- package/dist/src/utils/fs.d.ts.map +0 -1
- package/dist/src/utils/fs.js +0 -73
- package/dist/src/utils/fs.js.map +0 -1
- package/dist/src/utils/index.d.ts +0 -6
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js +0 -22
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/json.d.ts +0 -7
- package/dist/src/utils/json.d.ts.map +0 -1
- package/dist/src/utils/json.js +0 -3
- package/dist/src/utils/json.js.map +0 -1
- package/dist/src/utils/tuple.d.ts +0 -2
- package/dist/src/utils/tuple.d.ts.map +0 -1
- package/dist/src/utils/tuple.js +0 -6
- package/dist/src/utils/tuple.js.map +0 -1
- package/dist/src/utils/version.d.ts +0 -2
- package/dist/src/utils/version.d.ts.map +0 -1
- package/dist/src/utils/version.js +0 -11
- package/dist/src/utils/version.js.map +0 -1
- package/dist/src/utils/yaml.d.ts +0 -3
- package/dist/src/utils/yaml.d.ts.map +0 -1
- package/dist/src/utils/yaml.js +0 -14
- package/dist/src/utils/yaml.js.map +0 -1
- package/src/application/.eslintrc.js +0 -5
- package/src/application/env.ts +0 -14
- package/src/npm/FsManager.ts +0 -38
- package/src/pathUtils.ts +0 -4
- package/src/utils/PathMapping.ts +0 -38
- package/src/utils/Project.ts +0 -28
- package/src/utils/ProjectManager.ts +0 -76
- package/src/utils/Workspace.ts +0 -72
- package/src/utils/commands.ts +0 -65
- package/src/utils/fs.ts +0 -43
- package/src/utils/index.ts +0 -5
- package/src/utils/json.ts +0 -4
- package/src/utils/tuple.ts +0 -1
- package/src/utils/version.ts +0 -7
- package/src/utils/yaml.ts +0 -9
- /package/dist/{src → types}/application/Application.d.ts +0 -0
- /package/dist/{src → types}/application/Application.d.ts.map +0 -0
- /package/dist/{src → types}/application/Argument.d.ts +0 -0
- /package/dist/{src → types}/application/Argument.d.ts.map +0 -0
- /package/dist/{src → types}/application/Command.d.ts +0 -0
- /package/dist/{src → types}/application/Command.d.ts.map +0 -0
- /package/dist/{src → types}/application/CommandConfiguration.d.ts +0 -0
- /package/dist/{src → types}/application/CommandConfiguration.d.ts.map +0 -0
- /package/dist/{src → types}/application/CommandManager.d.ts +0 -0
- /package/dist/{src → types}/application/CommandManager.d.ts.map +0 -0
- /package/dist/{src → types}/application/Input.d.ts +0 -0
- /package/dist/{src → types}/application/Input.d.ts.map +0 -0
- /package/dist/{src → types}/application/InputParser.d.ts +0 -0
- /package/dist/{src → types}/application/InputParser.d.ts.map +0 -0
- /package/dist/{src → types}/application/Option.d.ts +0 -0
- /package/dist/{src → types}/application/Option.d.ts.map +0 -0
- /package/dist/{src → types}/application/UsageFormatter.d.ts +0 -0
- /package/dist/{src → types}/application/UsageFormatter.d.ts.map +0 -0
- /package/dist/{src → types}/application/assertNever.d.ts +0 -0
- /package/dist/{src → types}/application/assertNever.d.ts.map +0 -0
- /package/dist/{src → types}/npm/Package.d.ts +0 -0
- /package/dist/{src → types}/npm/Package.d.ts.map +0 -0
- /package/dist/{src → types}/npm/PackageJson.d.ts +0 -0
- /package/dist/{src → types}/npm/PackageJson.d.ts.map +0 -0
- /package/dist/{src → types}/npm/packageManagers/PackageManager.d.ts +0 -0
- /package/dist/{src → types}/npm/packageManagers/PackageManager.d.ts.map +0 -0
- /package/src/{.eslintrc.js → .eslintrc.cjs} +0 -0
|
@@ -0,0 +1,117 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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,EAAiB;AAAA,EAEvC,SAAS,UAAkB;AACjC,SAAK,OAAO,WAAW;AAChB,WAAA;AAAA,EACR;AAAA,EAEO,YAAY,aAAqB;AACvC,SAAK,OAAO,cAAc;AACnB,WAAA;AAAA,EACR;AAAA,EAEO,SAAS,WAAoB,MAAM;AACzC,SAAK,OAAO,WAAW;AAChB,WAAA;AAAA,EACR;AAAA,EAEO,gBAAgB;AACtB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EACR;AAAA,EAEO,YAAY;AAClB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EACR;AAAA,EAEO,gBAAgB;AACtB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EACR;AAAA,EAEO,aAAa;AACnB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EACR;AAAA,EAEO,aAAa;AACnB,SAAK,OAAO,aAAa;AAClB,WAAA;AAAA,EACR;AACD;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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,EAAiB;AAAA,EAEvC,SAAS,UAAkB;AACjC,SAAK,OAAO,WAAW;AAChB,WAAA;AAAA,EACR;AAAA,EAEO,YAAY,aAAqB;AACvC,SAAK,OAAO,cAAc;AACnB,WAAA;AAAA,EACR;AAAA,EAEO,SAAS,WAAoB,MAAM;AACzC,SAAK,OAAO,WAAW;AAChB,WAAA;AAAA,EACR;AAAA,EAEO,gBAAgB;AACtB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EACR;AAAA,EAEO,YAAY;AAClB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EACR;AAAA,EAEO,gBAAgB;AACtB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EACR;AAAA,EAEO,aAAa;AACnB,SAAK,OAAO,OAAO;AACZ,WAAA;AAAA,EACR;AAAA,EAEO,aAAa;AACnB,SAAK,OAAO,aAAa;AAClB,WAAA;AAAA,EACR;AACD;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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,CAAA;AACD,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,MACxC;AAAA,IACD;AACA,aAAS,OAAO,SAAS;AACxB,UAAI,IAAI,YAAY;AACnB;AAAA,MACD;AACA,YAAM,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,WAAW,KAAK,IAAI,QAAQ,KAAK;AAC7E,UAAA;AACJ,cAAQ,IAAI,MAAM;AAAA,QACjB,KAAKA,OAAAA,WAAW;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,kCAAY,IAAI,IAAI;AAAA,MACtB;AACA,UAAI,oBAAoB,GAAG,IAAI,GAAG,gBAAgB;AAC9C,UAAA,IAAI,SAASD,OAAA,WAAW,aAAa;AACpB,4BAAA,GAAG,iBAAiB,SAAS,iBAAiB;AAAA,MACnE;AACI,UAAA,CAAC,WAAW,IAAI,aAAa;AACX,6BAAA,KAAK,IAAI,WAAW;AAAA,MAC1C;AACI,UAAA,CAAC,IAAI,UAAU;AAClB,4BAAoB,IAAI,iBAAiB;AAAA,MAC1C;AACA,YAAM,KAAK,iBAAiB;AAAA,IAC7B;AACA,QAAI,WAAW,aAAa;AACpB,aAAA,MAAM,IAAI,CAAA,OAAM,GAAG,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,IAAI;AAAA,IACnD;AACO,WAAA,MAAM,KAAK,GAAG;AAAA,EACtB;AACD;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsageFormatter.js","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":[],"mappings":";;AAOO,MAAM,eAAe;AAAA,EAC3B,OAAc,OAAO,MAAkB,SAAmB,EAAE,QAAQ,UAAsC;AACzG,QAAI,QAAQ,CAAA;AACD,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,MACxC;AAAA,IACD;AACA,aAAS,OAAO,SAAS;AACxB,UAAI,IAAI,YAAY;AACnB;AAAA,MACD;AACA,YAAM,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,WAAW,KAAK,IAAI,QAAQ,KAAK;AAC7E,UAAA;AACJ,cAAQ,IAAI,MAAM;AAAA,QACjB,KAAK,WAAW;AAAA,QAChB,KAAK,WAAW;AACI,6BAAA;AACnB;AAAA,QACD,KAAK,WAAW;AACI,6BAAA;AACnB;AAAA,QACD,KAAK,WAAW;AACI,6BAAA;AACnB;AAAA,QACD;AACC,sBAAY,IAAI,IAAI;AAAA,MACtB;AACA,UAAI,oBAAoB,GAAG,IAAI,GAAG,gBAAgB;AAC9C,UAAA,IAAI,SAAS,WAAW,aAAa;AACpB,4BAAA,GAAG,iBAAiB,SAAS,iBAAiB;AAAA,MACnE;AACI,UAAA,CAAC,WAAW,IAAI,aAAa;AACX,6BAAA,KAAK,IAAI,WAAW;AAAA,MAC1C;AACI,UAAA,CAAC,IAAI,UAAU;AAClB,4BAAoB,IAAI,iBAAiB;AAAA,MAC1C;AACA,YAAM,KAAK,iBAAiB;AAAA,IAC7B;AACA,QAAI,WAAW,aAAa;AACpB,aAAA,MAAM,IAAI,CAAA,OAAM,GAAG,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,IAAI;AAAA,IACnD;AACO,WAAA,MAAM,KAAK,GAAG;AAAA,EACtB;AACD;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertNever.cjs","sources":["../../../../../packages/cli-common/src/application/assertNever.ts"],"sourcesContent":["export function assertNever(_: never): never {\n\tthrow new Error()\n}\n"],"names":[],"mappings":";;AAAO,SAAS,YAAY,GAAiB;AAC5C,QAAM,IAAI,MAAM;AACjB;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertNever.js","sources":["../../../../../packages/cli-common/src/application/assertNever.ts"],"sourcesContent":["export function assertNever(_: never): never {\n\tthrow new Error()\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,GAAiB;AAC5C,QAAM,IAAI,MAAM;AACjB;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const node_child_process = require("node:child_process");
|
|
4
|
+
const chalk = require("chalk");
|
|
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, key + "", value);
|
|
8
|
+
class CommandRunner {
|
|
9
|
+
constructor() {
|
|
10
|
+
__publicField(this, "runCommand", (command, args, options) => {
|
|
11
|
+
const args2 = args.filter((it) => it !== void 0);
|
|
12
|
+
if (!process.env.DISABLE_COMMAND_PRINTING) {
|
|
13
|
+
console.error(chalk.gray(`$ ${command} ${args2.map((it) => `'${it.replace(/'/g, `'\\''`)}'`).join(" ")}`));
|
|
14
|
+
}
|
|
15
|
+
const child = node_child_process.spawn(command, args2, {
|
|
16
|
+
cwd: options.cwd,
|
|
17
|
+
env: { ...process.env, ...options.env || {} },
|
|
18
|
+
detached: options.detached
|
|
19
|
+
});
|
|
20
|
+
if (options.stdin) {
|
|
21
|
+
options.stdin.pipe(child.stdin);
|
|
22
|
+
}
|
|
23
|
+
let stdout = "";
|
|
24
|
+
let stderr = "";
|
|
25
|
+
child.stdout.on("data", (chunk) => {
|
|
26
|
+
stdout += chunk.toString();
|
|
27
|
+
});
|
|
28
|
+
child.stderr.on("data", (chunk) => {
|
|
29
|
+
stderr += chunk.toString();
|
|
30
|
+
});
|
|
31
|
+
if (options.stdout) {
|
|
32
|
+
child.stdout.pipe(options.stdout);
|
|
33
|
+
}
|
|
34
|
+
if (options.stderr) {
|
|
35
|
+
child.stderr.pipe(options.stderr);
|
|
36
|
+
}
|
|
37
|
+
const output = new Promise((resolve, reject) => {
|
|
38
|
+
child.on("exit", (exitCode) => {
|
|
39
|
+
if (exitCode === 0) {
|
|
40
|
+
resolve(stdout);
|
|
41
|
+
} else {
|
|
42
|
+
reject(new ChildProcessError(exitCode, stderr));
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
return { output, child };
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
class ChildProcessError extends Error {
|
|
51
|
+
constructor(exitCode, stderr) {
|
|
52
|
+
super(`Command has failed(${exitCode}): ${stderr} `);
|
|
53
|
+
this.exitCode = exitCode;
|
|
54
|
+
this.stderr = stderr;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.ChildProcessError = ChildProcessError;
|
|
58
|
+
exports.CommandRunner = CommandRunner;
|
|
59
|
+
//# sourceMappingURL=CommandRunner.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandRunner.cjs","sources":["../../../../../packages/cli-common/src/npm/CommandRunner.ts"],"sourcesContent":["import { ChildProcessWithoutNullStreams, spawn } from 'node:child_process'\nimport { Readable, Writable } from 'node:stream'\nimport chalk from 'chalk'\n\nexport type RunningCommand = { child: ChildProcessWithoutNullStreams; output: Promise<string> }\n\nexport class CommandRunner {\n\trunCommand = (\n\t\tcommand: string,\n\t\targs: (string | undefined)[],\n\t\toptions: {\n\t\t\tcwd: string\n\t\t\tstdin?: Readable\n\t\t\tstdout?: Writable\n\t\t\tstderr?: Writable\n\t\t\tenv?: NodeJS.ProcessEnv\n\t\t\tdetached?: boolean\n\t\t},\n\t): RunningCommand => {\n\t\tconst args2 = args.filter((it): it is string => it !== undefined)\n\t\tif (!process.env.DISABLE_COMMAND_PRINTING) {\n\t\t\tconsole.error(chalk.gray(`$ ${command} ${args2.map(it => `'${it.replace(/'/g, `'\\\\''`)}'`).join(' ')}`))\n\t\t}\n\t\tconst child = spawn(command, args2, {\n\t\t\tcwd: options.cwd,\n\t\t\tenv: { ...process.env, ...(options.env || {}) },\n\t\t\tdetached: options.detached,\n\t\t})\n\t\tif (options.stdin) {\n\t\t\toptions.stdin.pipe(child.stdin)\n\t\t}\n\n\t\tlet stdout = ''\n\t\tlet stderr = ''\n\n\t\tchild.stdout.on('data', (chunk): void => {\n\t\t\tstdout += chunk.toString()\n\t\t})\n\n\t\tchild.stderr.on('data', (chunk): void => {\n\t\t\tstderr += chunk.toString()\n\t\t})\n\t\tif (options.stdout) {\n\t\t\tchild.stdout.pipe(options.stdout)\n\t\t}\n\t\tif (options.stderr) {\n\t\t\tchild.stderr.pipe(options.stderr)\n\t\t}\n\n\t\tconst output = new Promise<string>((resolve, reject) => {\n\t\t\tchild.on('exit', (exitCode): void => {\n\t\t\t\tif (exitCode === 0) {\n\t\t\t\t\tresolve(stdout)\n\t\t\t\t} else {\n\t\t\t\t\treject(new ChildProcessError(exitCode, stderr))\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\n\t\treturn { output, child }\n\t}\n}\n\n\nexport class ChildProcessError extends Error {\n\tconstructor(public readonly exitCode: number | null, public readonly stderr: string) {\n\t\tsuper(`Command has failed(${exitCode}): ${stderr} `)\n\t}\n}\n"],"names":["spawn"],"mappings":";;;;;;;AAMO,MAAM,cAAc;AAAA,EAApB,cAAA;AACO,kBAAA,MAAA,cAAA,CACZ,SACA,MACA,YAQoB;AACpB,YAAM,QAAQ,KAAK,OAAO,CAAC,OAAqB,OAAO,MAAS;AAC5D,UAAA,CAAC,QAAQ,IAAI,0BAA0B;AAClC,gBAAA,MAAM,MAAM,KAAK,KAAK,OAAO,IAAI,MAAM,IAAI,CAAM,OAAA,IAAI,GAAG,QAAQ,MAAM,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;AAAA,MACxG;AACM,YAAA,QAAQA,mBAAAA,MAAM,SAAS,OAAO;AAAA,QACnC,KAAK,QAAQ;AAAA,QACb,KAAK,EAAE,GAAG,QAAQ,KAAK,GAAI,QAAQ,OAAO,GAAI;AAAA,QAC9C,UAAU,QAAQ;AAAA,MAAA,CAClB;AACD,UAAI,QAAQ,OAAO;AACV,gBAAA,MAAM,KAAK,MAAM,KAAK;AAAA,MAC/B;AAEA,UAAI,SAAS;AACb,UAAI,SAAS;AAEb,YAAM,OAAO,GAAG,QAAQ,CAAC,UAAgB;AACxC,kBAAU,MAAM;MAAS,CACzB;AAED,YAAM,OAAO,GAAG,QAAQ,CAAC,UAAgB;AACxC,kBAAU,MAAM;MAAS,CACzB;AACD,UAAI,QAAQ,QAAQ;AACb,cAAA,OAAO,KAAK,QAAQ,MAAM;AAAA,MACjC;AACA,UAAI,QAAQ,QAAQ;AACb,cAAA,OAAO,KAAK,QAAQ,MAAM;AAAA,MACjC;AAEA,YAAM,SAAS,IAAI,QAAgB,CAAC,SAAS,WAAW;AACjD,cAAA,GAAG,QAAQ,CAAC,aAAmB;AACpC,cAAI,aAAa,GAAG;AACnB,oBAAQ,MAAM;AAAA,UAAA,OACR;AACN,mBAAO,IAAI,kBAAkB,UAAU,MAAM,CAAC;AAAA,UAC/C;AAAA,QAAA,CACA;AAAA,MAAA,CACD;AAEM,aAAA,EAAE,QAAQ;IAAM,CACxB;AAAA,EAAA;AACD;AAGO,MAAM,0BAA0B,MAAM;AAAA,EAC5C,YAA4B,UAAyC,QAAgB;AACpF,UAAM,sBAAsB,QAAQ,MAAM,MAAM,GAAG;AADxB,SAAA,WAAA;AAAyC,SAAA,SAAA;AAAA,EAErE;AACD;;;"}
|