parse-my-command 0.1.3 → 0.1.4
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/README.md +12 -0
- package/dist/index.cjs +34 -2
- package/dist/index.js +38 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,3 +52,15 @@ console.log(missingOptions.get(childCommand)); // Set(1) { 'optionC' }
|
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
More examples can be found in the [examples](/examples/) directory.
|
|
55
|
+
|
|
56
|
+
## How It Works and Limitations
|
|
57
|
+
|
|
58
|
+
This module works by creating a (best-effort) clone of the command and its
|
|
59
|
+
subcommands, setting the actions to no-op functions, and then parsing the
|
|
60
|
+
`argv` with the cloned instance. This approach might have some limitations:
|
|
61
|
+
|
|
62
|
+
1. The implementation might break if Commander.js changes its internals
|
|
63
|
+
2. Custom argument and option processors are assumed to be pure functions
|
|
64
|
+
3. Hooks attached to the commands will not be called
|
|
65
|
+
4. Some edge cases might not be handled correctly (Please feel free to open an
|
|
66
|
+
issue/PR if you find one)
|
package/dist/index.cjs
CHANGED
|
@@ -53,14 +53,46 @@ var findMissingOptions = (command, providedOptionsByCommand) => {
|
|
|
53
53
|
}
|
|
54
54
|
return missingOptionsByCommand;
|
|
55
55
|
};
|
|
56
|
+
var copyCommandSettings = (source, target) => {
|
|
57
|
+
for (const keysToCopy of [
|
|
58
|
+
"_args",
|
|
59
|
+
"_combineFlagAndOptionalValue",
|
|
60
|
+
"_allowUnknownOption",
|
|
61
|
+
"_allowExcessArguments",
|
|
62
|
+
"_enablePositionalOptions",
|
|
63
|
+
"_passThroughOptions"
|
|
64
|
+
]) {
|
|
65
|
+
target[keysToCopy] = source[keysToCopy];
|
|
66
|
+
}
|
|
67
|
+
target.name(source.name());
|
|
68
|
+
target.aliases(source.aliases());
|
|
69
|
+
};
|
|
70
|
+
var cloneOption = (option) => {
|
|
71
|
+
const newOption = new import_commander.Option(option.flags, option.description);
|
|
72
|
+
newOption.default(option.defaultValue, option.defaultValueDescription);
|
|
73
|
+
if (option.argChoices) {
|
|
74
|
+
newOption.choices(option.argChoices);
|
|
75
|
+
}
|
|
76
|
+
newOption.makeOptionMandatory(false);
|
|
77
|
+
newOption.preset(option.parseArg);
|
|
78
|
+
newOption.conflicts(
|
|
79
|
+
option.conflictsWith
|
|
80
|
+
);
|
|
81
|
+
newOption.env(option.envVar);
|
|
82
|
+
if (option.parseArg) {
|
|
83
|
+
newOption.argParser(option.parseArg);
|
|
84
|
+
}
|
|
85
|
+
return newOption;
|
|
86
|
+
};
|
|
56
87
|
var partialParse = (command, argv, options) => {
|
|
57
88
|
const providedOptions = /* @__PURE__ */ new Map();
|
|
58
89
|
const commandsMap = /* @__PURE__ */ new Map();
|
|
59
90
|
let matchedCommand;
|
|
60
91
|
const createParserCommand = (parserCommand2, command2) => {
|
|
61
92
|
commandsMap.set(parserCommand2, command2);
|
|
93
|
+
copyCommandSettings(command2, parserCommand2);
|
|
62
94
|
for (const option of command2.options) {
|
|
63
|
-
parserCommand2.
|
|
95
|
+
parserCommand2.addOption(cloneOption(option));
|
|
64
96
|
}
|
|
65
97
|
parserCommand2.hook("preSubcommand", (thisCommand, actionCommand) => {
|
|
66
98
|
providedOptions.set(commandsMap.get(parserCommand2), thisCommand.opts());
|
|
@@ -92,4 +124,4 @@ var partialParse = (command, argv, options) => {
|
|
|
92
124
|
findMissingOptions,
|
|
93
125
|
partialParse
|
|
94
126
|
});
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgY2FtZWxDYXNlIGZyb20gXCJjYW1lbGNhc2VcIjtcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9uVmFsdWVzLFxuICBDb21tYW5kLFxuICB0eXBlIFBhcnNlT3B0aW9ucyxcbiAgT3B0aW9uLFxufSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmV4cG9ydCBjb25zdCBmaW5kTWlzc2luZ09wdGlvbnMgPSAoXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHByb3ZpZGVkT3B0aW9uc0J5Q29tbWFuZDogTWFwPENvbW1hbmQsIE9wdGlvblZhbHVlcz4sXG4pID0+IHtcbiAgY29uc3QgbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQgPSBuZXcgTWFwPENvbW1hbmQsIFNldDxzdHJpbmc+PigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gIGxldCBjdXJyZW50Q29tbWFuZDogQ29tbWFuZCB8IHVuZGVmaW5lZCB8IG51bGwgPSBjb21tYW5kO1xuXG4gIHdoaWxlIChjdXJyZW50Q29tbWFuZCkge1xuICAgIGNvbnN0IG1pc3NpbmdPcHRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgcHJvdmlkZWRPcHRpb25zID0gcHJvdmlkZWRPcHRpb25zQnlDb21tYW5kLmdldChjdXJyZW50Q29tbWFuZCk7XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY3VycmVudENvbW1hbmQub3B0aW9ucykge1xuICAgICAgY29uc3Qga2V5ID0gY2FtZWxDYXNlKChvcHRpb24ubG9uZyA/PyBvcHRpb24uc2hvcnQpISk7XG4gICAgICBpZiAocHJvdmlkZWRPcHRpb25zPy5ba2V5XSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbWlzc2luZ09wdGlvbnMuYWRkKGtleSk7XG4gICAgfVxuXG4gICAgbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQuc2V0KGN1cnJlbnRDb21tYW5kLCBtaXNzaW5nT3B0aW9ucyk7XG4gICAgY3VycmVudENvbW1hbmQgPSBjdXJyZW50Q29tbWFuZC5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQ7XG59O1xuXG5leHBvcnQgdHlwZSBQYXJ0aWFsUGFyc2VSZXN1bHQgPSB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB3aG9zZSBhY3Rpb24gd2lsbCBiZSBleGVjdXRlZFxuICAgKi9cbiAgbWF0Y2hlZENvbW1hbmQ6IENvbW1hbmQgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBjb21tYW5kcyB0byBhIHNldCBvZiBtaXNzaW5nIG9wdGlvbnMgZm9yIHRoYXQgY29tbWFuZFxuICAgKi9cbiAgbWlzc2luZ09wdGlvbnM6IE1hcDxDb21tYW5kLCBTZXQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBjb21tYW5kcyB0byB0aGUgb3B0aW9ucyBwcm92aWRlZCBmb3IgdGhhdCBjb21tYW5kXG4gICAqL1xuICBwcm92aWRlZE9wdGlvbnM6IE1hcDxDb21tYW5kLCBPcHRpb25WYWx1ZXM+O1xufTtcblxuY29uc3QgY29weUNvbW1hbmRTZXR0aW5ncyA9IChzb3VyY2U6IENvbW1hbmQsIHRhcmdldDogQ29tbWFuZCkgPT4ge1xuICBmb3IgKGNvbnN0IGtleXNUb0NvcHkgb2YgW1xuICAgIFwiX2FyZ3NcIixcbiAgICBcIl9jb21iaW5lRmxhZ0FuZE9wdGlvbmFsVmFsdWVcIixcbiAgICBcIl9hbGxvd1Vua25vd25PcHRpb25cIixcbiAgICBcIl9hbGxvd0V4Y2Vzc0FyZ3VtZW50c1wiLFxuICAgIFwiX2VuYWJsZVBvc2l0aW9uYWxPcHRpb25zXCIsXG4gICAgXCJfcGFzc1Rocm91Z2hPcHRpb25zXCIsXG4gIF0gYXMgY29uc3QpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgKHRhcmdldCBhcyBhbnkpW2tleXNUb0NvcHldID0gKHNvdXJjZSBhcyBhbnkpW2tleXNUb0NvcHldO1xuICB9XG5cbiAgdGFyZ2V0Lm5hbWUoc291cmNlLm5hbWUoKSk7XG4gIHRhcmdldC5hbGlhc2VzKHNvdXJjZS5hbGlhc2VzKCkpO1xufTtcblxuY29uc3QgY2xvbmVPcHRpb24gPSAob3B0aW9uOiBPcHRpb24pID0+IHtcbiAgY29uc3QgbmV3T3B0aW9uID0gbmV3IE9wdGlvbihvcHRpb24uZmxhZ3MsIG9wdGlvbi5kZXNjcmlwdGlvbik7XG4gIG5ld09wdGlvbi5kZWZhdWx0KG9wdGlvbi5kZWZhdWx0VmFsdWUsIG9wdGlvbi5kZWZhdWx0VmFsdWVEZXNjcmlwdGlvbik7XG4gIGlmIChvcHRpb24uYXJnQ2hvaWNlcykge1xuICAgIG5ld09wdGlvbi5jaG9pY2VzKG9wdGlvbi5hcmdDaG9pY2VzKTtcbiAgfVxuXG4gIG5ld09wdGlvbi5tYWtlT3B0aW9uTWFuZGF0b3J5KGZhbHNlKTtcbiAgbmV3T3B0aW9uLnByZXNldChvcHRpb24ucGFyc2VBcmcpO1xuICBuZXdPcHRpb24uY29uZmxpY3RzKFxuICAgIChvcHRpb24gYXMgT3B0aW9uICYgeyBjb25mbGljdHNXaXRoOiBzdHJpbmdbXSB9KS5jb25mbGljdHNXaXRoLFxuICApO1xuICBuZXdPcHRpb24uZW52KChvcHRpb24gYXMgT3B0aW9uICYgeyBlbnZWYXI6IHN0cmluZyB9KS5lbnZWYXIpO1xuICBpZiAob3B0aW9uLnBhcnNlQXJnKSB7XG4gICAgbmV3T3B0aW9uLmFyZ1BhcnNlcihvcHRpb24ucGFyc2VBcmcpO1xuICB9XG5cbiAgcmV0dXJuIG5ld09wdGlvbjtcbn07XG5cbi8qKlxuICogUGFydGlhbGx5IHBhcnNlIGFyZ3YgZm9yIGEgY29tbWFuZCB3aXRob3V0IGV4ZWN1dGluZyB0aGUgYWN0aW9uLiBAc2VlIHtAbGluayBDb21tYW5kLnBhcnNlfVxuICpcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBtYXRjaGVkIGNvbW1hbmQsIHRoZSBwcm92aWRlZCBvcHRpb25zLCBhbmQgdGhlIG1pc3Npbmcgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnRpYWxQYXJzZSA9IChcbiAgY29tbWFuZDogQ29tbWFuZCxcbiAgYXJndjogcmVhZG9ubHkgc3RyaW5nW10sXG4gIG9wdGlvbnM/OiBQYXJzZU9wdGlvbnMsXG4pOiBQYXJ0aWFsUGFyc2VSZXN1bHQgPT4ge1xuICBjb25zdCBwcm92aWRlZE9wdGlvbnMgPSBuZXcgTWFwPENvbW1hbmQsIE9wdGlvblZhbHVlcz4oKTtcbiAgY29uc3QgY29tbWFuZHNNYXAgPSBuZXcgTWFwPENvbW1hbmQsIENvbW1hbmQ+KCk7XG4gIGxldCBtYXRjaGVkQ29tbWFuZDogQ29tbWFuZCB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBjcmVhdGVQYXJzZXJDb21tYW5kID0gKHBhcnNlckNvbW1hbmQ6IENvbW1hbmQsIGNvbW1hbmQ6IENvbW1hbmQpID0+IHtcbiAgICBjb21tYW5kc01hcC5zZXQocGFyc2VyQ29tbWFuZCwgY29tbWFuZCk7XG5cbiAgICBjb3B5Q29tbWFuZFNldHRpbmdzKGNvbW1hbmQsIHBhcnNlckNvbW1hbmQpO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY29tbWFuZC5vcHRpb25zKSB7XG4gICAgICBwYXJzZXJDb21tYW5kLmFkZE9wdGlvbihjbG9uZU9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBwYXJzZXJDb21tYW5kLmhvb2soXCJwcmVTdWJjb21tYW5kXCIsICh0aGlzQ29tbWFuZCwgYWN0aW9uQ29tbWFuZCkgPT4ge1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChjb21tYW5kc01hcC5nZXQocGFyc2VyQ29tbWFuZCkhLCB0aGlzQ29tbWFuZC5vcHRzKCkpO1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChjb21tYW5kc01hcC5nZXQoYWN0aW9uQ29tbWFuZCkhLCB0aGlzQ29tbWFuZC5vcHRzKCkpO1xuICAgIH0pO1xuXG4gICAgcGFyc2VyQ29tbWFuZC5hY3Rpb24oKCkgPT4ge1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChcbiAgICAgICAgY29tbWFuZHNNYXAuZ2V0KHBhcnNlckNvbW1hbmQpISxcbiAgICAgICAgcGFyc2VyQ29tbWFuZC5vcHRzKCksXG4gICAgICApO1xuICAgICAgbWF0Y2hlZENvbW1hbmQgPSBjb21tYW5kO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBzdWJjb21tYW5kIG9mIGNvbW1hbmQuY29tbWFuZHMgYXMgQ29tbWFuZFtdKSB7XG4gICAgICBjb25zdCBwYXJzZXJTdWJjb21tYW5kID0gcGFyc2VyQ29tbWFuZFxuICAgICAgICAuY29tbWFuZChzdWJjb21tYW5kLm5hbWUoKSlcbiAgICAgICAgLmV4aXRPdmVycmlkZSgpO1xuICAgICAgY3JlYXRlUGFyc2VyQ29tbWFuZChwYXJzZXJTdWJjb21tYW5kLCBzdWJjb21tYW5kKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VyQ29tbWFuZDtcbiAgfTtcblxuICBjb25zdCBwYXJzZXJDb21tYW5kID0gY3JlYXRlUGFyc2VyQ29tbWFuZChcbiAgICBuZXcgQ29tbWFuZCgpLmV4aXRPdmVycmlkZSgpLFxuICAgIGNvbW1hbmQsXG4gICk7XG4gIHBhcnNlckNvbW1hbmQucGFyc2UoYXJndiwgb3B0aW9ucyk7XG5cbiAgY29uc3QgbWlzc2luZ09wdGlvbnMgPSBtYXRjaGVkQ29tbWFuZFxuICAgID8gZmluZE1pc3NpbmdPcHRpb25zKG1hdGNoZWRDb21tYW5kLCBwcm92aWRlZE9wdGlvbnMpXG4gICAgOiBuZXcgTWFwPENvbW1hbmQsIFNldDxzdHJpbmc+PigpO1xuXG4gIHJldHVybiB7IG1hdGNoZWRDb21tYW5kLCBtaXNzaW5nT3B0aW9ucywgcHJvdmlkZWRPcHRpb25zIH07XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBc0I7QUFDdEIsdUJBS087QUFFQSxJQUFNLHFCQUFxQixDQUNoQyxTQUNBLDZCQUNHO0FBQ0gsUUFBTSwwQkFBMEIsb0JBQUksSUFBMEI7QUFHOUQsTUFBSSxpQkFBNkM7QUFFakQsU0FBTyxnQkFBZ0I7QUFDckIsVUFBTSxpQkFBaUIsb0JBQUksSUFBWTtBQUN2QyxVQUFNLGtCQUFrQix5QkFBeUIsSUFBSSxjQUFjO0FBQ25FLGVBQVcsVUFBVSxlQUFlLFNBQVM7QUFDM0MsWUFBTSxVQUFNLGlCQUFBQSxTQUFXLE9BQU8sUUFBUSxPQUFPLEtBQU87QUFDcEQsVUFBSSxrQkFBa0IsR0FBRyxHQUFHO0FBQzFCO0FBQUEsTUFDRjtBQUVBLHFCQUFlLElBQUksR0FBRztBQUFBLElBQ3hCO0FBRUEsNEJBQXdCLElBQUksZ0JBQWdCLGNBQWM7QUFDMUQscUJBQWlCLGVBQWU7QUFBQSxFQUNsQztBQUVBLFNBQU87QUFDVDtBQWlCQSxJQUFNLHNCQUFzQixDQUFDLFFBQWlCLFdBQW9CO0FBQ2hFLGFBQVcsY0FBYztBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLEdBQVk7QUFFVixJQUFDLE9BQWUsVUFBVSxJQUFLLE9BQWUsVUFBVTtBQUFBLEVBQzFEO0FBRUEsU0FBTyxLQUFLLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQU8sUUFBUSxPQUFPLFFBQVEsQ0FBQztBQUNqQztBQUVBLElBQU0sY0FBYyxDQUFDLFdBQW1CO0FBQ3RDLFFBQU0sWUFBWSxJQUFJLHdCQUFPLE9BQU8sT0FBTyxPQUFPLFdBQVc7QUFDN0QsWUFBVSxRQUFRLE9BQU8sY0FBYyxPQUFPLHVCQUF1QjtBQUNyRSxNQUFJLE9BQU8sWUFBWTtBQUNyQixjQUFVLFFBQVEsT0FBTyxVQUFVO0FBQUEsRUFDckM7QUFFQSxZQUFVLG9CQUFvQixLQUFLO0FBQ25DLFlBQVUsT0FBTyxPQUFPLFFBQVE7QUFDaEMsWUFBVTtBQUFBLElBQ1AsT0FBZ0Q7QUFBQSxFQUNuRDtBQUNBLFlBQVUsSUFBSyxPQUF1QyxNQUFNO0FBQzVELE1BQUksT0FBTyxVQUFVO0FBQ25CLGNBQVUsVUFBVSxPQUFPLFFBQVE7QUFBQSxFQUNyQztBQUVBLFNBQU87QUFDVDtBQU9PLElBQU0sZUFBZSxDQUMxQixTQUNBLE1BQ0EsWUFDdUI7QUFDdkIsUUFBTSxrQkFBa0Isb0JBQUksSUFBMkI7QUFDdkQsUUFBTSxjQUFjLG9CQUFJLElBQXNCO0FBQzlDLE1BQUk7QUFFSixRQUFNLHNCQUFzQixDQUFDQyxnQkFBd0JDLGFBQXFCO0FBQ3hFLGdCQUFZLElBQUlELGdCQUFlQyxRQUFPO0FBRXRDLHdCQUFvQkEsVUFBU0QsY0FBYTtBQUUxQyxlQUFXLFVBQVVDLFNBQVEsU0FBUztBQUNwQyxNQUFBRCxlQUFjLFVBQVUsWUFBWSxNQUFNLENBQUM7QUFBQSxJQUM3QztBQUVBLElBQUFBLGVBQWMsS0FBSyxpQkFBaUIsQ0FBQyxhQUFhLGtCQUFrQjtBQUNsRSxzQkFBZ0IsSUFBSSxZQUFZLElBQUlBLGNBQWEsR0FBSSxZQUFZLEtBQUssQ0FBQztBQUN2RSxzQkFBZ0IsSUFBSSxZQUFZLElBQUksYUFBYSxHQUFJLFlBQVksS0FBSyxDQUFDO0FBQUEsSUFDekUsQ0FBQztBQUVELElBQUFBLGVBQWMsT0FBTyxNQUFNO0FBQ3pCLHNCQUFnQjtBQUFBLFFBQ2QsWUFBWSxJQUFJQSxjQUFhO0FBQUEsUUFDN0JBLGVBQWMsS0FBSztBQUFBLE1BQ3JCO0FBQ0EsdUJBQWlCQztBQUFBLElBQ25CLENBQUM7QUFFRCxlQUFXLGNBQWNBLFNBQVEsVUFBdUI7QUFDdEQsWUFBTSxtQkFBbUJELGVBQ3RCLFFBQVEsV0FBVyxLQUFLLENBQUMsRUFDekIsYUFBYTtBQUNoQiwwQkFBb0Isa0JBQWtCLFVBQVU7QUFBQSxJQUNsRDtBQUVBLFdBQU9BO0FBQUEsRUFDVDtBQUVBLFFBQU0sZ0JBQWdCO0FBQUEsSUFDcEIsSUFBSSx5QkFBUSxFQUFFLGFBQWE7QUFBQSxJQUMzQjtBQUFBLEVBQ0Y7QUFDQSxnQkFBYyxNQUFNLE1BQU0sT0FBTztBQUVqQyxRQUFNLGlCQUFpQixpQkFDbkIsbUJBQW1CLGdCQUFnQixlQUFlLElBQ2xELG9CQUFJLElBQTBCO0FBRWxDLFNBQU8sRUFBRSxnQkFBZ0IsZ0JBQWdCLGdCQUFnQjtBQUMzRDsiLAogICJuYW1lcyI6IFsiY2FtZWxDYXNlIiwgInBhcnNlckNvbW1hbmQiLCAiY29tbWFuZCJdCn0K
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import camelCase from "camelcase";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
Command,
|
|
5
|
+
Option
|
|
6
|
+
} from "commander";
|
|
4
7
|
var findMissingOptions = (command, providedOptionsByCommand) => {
|
|
5
8
|
const missingOptionsByCommand = /* @__PURE__ */ new Map();
|
|
6
9
|
let currentCommand = command;
|
|
@@ -19,14 +22,46 @@ var findMissingOptions = (command, providedOptionsByCommand) => {
|
|
|
19
22
|
}
|
|
20
23
|
return missingOptionsByCommand;
|
|
21
24
|
};
|
|
25
|
+
var copyCommandSettings = (source, target) => {
|
|
26
|
+
for (const keysToCopy of [
|
|
27
|
+
"_args",
|
|
28
|
+
"_combineFlagAndOptionalValue",
|
|
29
|
+
"_allowUnknownOption",
|
|
30
|
+
"_allowExcessArguments",
|
|
31
|
+
"_enablePositionalOptions",
|
|
32
|
+
"_passThroughOptions"
|
|
33
|
+
]) {
|
|
34
|
+
target[keysToCopy] = source[keysToCopy];
|
|
35
|
+
}
|
|
36
|
+
target.name(source.name());
|
|
37
|
+
target.aliases(source.aliases());
|
|
38
|
+
};
|
|
39
|
+
var cloneOption = (option) => {
|
|
40
|
+
const newOption = new Option(option.flags, option.description);
|
|
41
|
+
newOption.default(option.defaultValue, option.defaultValueDescription);
|
|
42
|
+
if (option.argChoices) {
|
|
43
|
+
newOption.choices(option.argChoices);
|
|
44
|
+
}
|
|
45
|
+
newOption.makeOptionMandatory(false);
|
|
46
|
+
newOption.preset(option.parseArg);
|
|
47
|
+
newOption.conflicts(
|
|
48
|
+
option.conflictsWith
|
|
49
|
+
);
|
|
50
|
+
newOption.env(option.envVar);
|
|
51
|
+
if (option.parseArg) {
|
|
52
|
+
newOption.argParser(option.parseArg);
|
|
53
|
+
}
|
|
54
|
+
return newOption;
|
|
55
|
+
};
|
|
22
56
|
var partialParse = (command, argv, options) => {
|
|
23
57
|
const providedOptions = /* @__PURE__ */ new Map();
|
|
24
58
|
const commandsMap = /* @__PURE__ */ new Map();
|
|
25
59
|
let matchedCommand;
|
|
26
60
|
const createParserCommand = (parserCommand2, command2) => {
|
|
27
61
|
commandsMap.set(parserCommand2, command2);
|
|
62
|
+
copyCommandSettings(command2, parserCommand2);
|
|
28
63
|
for (const option of command2.options) {
|
|
29
|
-
parserCommand2.
|
|
64
|
+
parserCommand2.addOption(cloneOption(option));
|
|
30
65
|
}
|
|
31
66
|
parserCommand2.hook("preSubcommand", (thisCommand, actionCommand) => {
|
|
32
67
|
providedOptions.set(commandsMap.get(parserCommand2), thisCommand.opts());
|
|
@@ -57,4 +92,4 @@ export {
|
|
|
57
92
|
findMissingOptions,
|
|
58
93
|
partialParse
|
|
59
94
|
};
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgY2FtZWxDYXNlIGZyb20gXCJjYW1lbGNhc2VcIjtcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9uVmFsdWVzLFxuICBDb21tYW5kLFxuICB0eXBlIFBhcnNlT3B0aW9ucyxcbiAgT3B0aW9uLFxufSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmV4cG9ydCBjb25zdCBmaW5kTWlzc2luZ09wdGlvbnMgPSAoXG4gIGNvbW1hbmQ6IENvbW1hbmQsXG4gIHByb3ZpZGVkT3B0aW9uc0J5Q29tbWFuZDogTWFwPENvbW1hbmQsIE9wdGlvblZhbHVlcz4sXG4pID0+IHtcbiAgY29uc3QgbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQgPSBuZXcgTWFwPENvbW1hbmQsIFNldDxzdHJpbmc+PigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gIGxldCBjdXJyZW50Q29tbWFuZDogQ29tbWFuZCB8IHVuZGVmaW5lZCB8IG51bGwgPSBjb21tYW5kO1xuXG4gIHdoaWxlIChjdXJyZW50Q29tbWFuZCkge1xuICAgIGNvbnN0IG1pc3NpbmdPcHRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgcHJvdmlkZWRPcHRpb25zID0gcHJvdmlkZWRPcHRpb25zQnlDb21tYW5kLmdldChjdXJyZW50Q29tbWFuZCk7XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY3VycmVudENvbW1hbmQub3B0aW9ucykge1xuICAgICAgY29uc3Qga2V5ID0gY2FtZWxDYXNlKChvcHRpb24ubG9uZyA/PyBvcHRpb24uc2hvcnQpISk7XG4gICAgICBpZiAocHJvdmlkZWRPcHRpb25zPy5ba2V5XSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbWlzc2luZ09wdGlvbnMuYWRkKGtleSk7XG4gICAgfVxuXG4gICAgbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQuc2V0KGN1cnJlbnRDb21tYW5kLCBtaXNzaW5nT3B0aW9ucyk7XG4gICAgY3VycmVudENvbW1hbmQgPSBjdXJyZW50Q29tbWFuZC5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gbWlzc2luZ09wdGlvbnNCeUNvbW1hbmQ7XG59O1xuXG5leHBvcnQgdHlwZSBQYXJ0aWFsUGFyc2VSZXN1bHQgPSB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB3aG9zZSBhY3Rpb24gd2lsbCBiZSBleGVjdXRlZFxuICAgKi9cbiAgbWF0Y2hlZENvbW1hbmQ6IENvbW1hbmQgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBjb21tYW5kcyB0byBhIHNldCBvZiBtaXNzaW5nIG9wdGlvbnMgZm9yIHRoYXQgY29tbWFuZFxuICAgKi9cbiAgbWlzc2luZ09wdGlvbnM6IE1hcDxDb21tYW5kLCBTZXQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBjb21tYW5kcyB0byB0aGUgb3B0aW9ucyBwcm92aWRlZCBmb3IgdGhhdCBjb21tYW5kXG4gICAqL1xuICBwcm92aWRlZE9wdGlvbnM6IE1hcDxDb21tYW5kLCBPcHRpb25WYWx1ZXM+O1xufTtcblxuY29uc3QgY29weUNvbW1hbmRTZXR0aW5ncyA9IChzb3VyY2U6IENvbW1hbmQsIHRhcmdldDogQ29tbWFuZCkgPT4ge1xuICBmb3IgKGNvbnN0IGtleXNUb0NvcHkgb2YgW1xuICAgIFwiX2FyZ3NcIixcbiAgICBcIl9jb21iaW5lRmxhZ0FuZE9wdGlvbmFsVmFsdWVcIixcbiAgICBcIl9hbGxvd1Vua25vd25PcHRpb25cIixcbiAgICBcIl9hbGxvd0V4Y2Vzc0FyZ3VtZW50c1wiLFxuICAgIFwiX2VuYWJsZVBvc2l0aW9uYWxPcHRpb25zXCIsXG4gICAgXCJfcGFzc1Rocm91Z2hPcHRpb25zXCIsXG4gIF0gYXMgY29uc3QpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgKHRhcmdldCBhcyBhbnkpW2tleXNUb0NvcHldID0gKHNvdXJjZSBhcyBhbnkpW2tleXNUb0NvcHldO1xuICB9XG5cbiAgdGFyZ2V0Lm5hbWUoc291cmNlLm5hbWUoKSk7XG4gIHRhcmdldC5hbGlhc2VzKHNvdXJjZS5hbGlhc2VzKCkpO1xufTtcblxuY29uc3QgY2xvbmVPcHRpb24gPSAob3B0aW9uOiBPcHRpb24pID0+IHtcbiAgY29uc3QgbmV3T3B0aW9uID0gbmV3IE9wdGlvbihvcHRpb24uZmxhZ3MsIG9wdGlvbi5kZXNjcmlwdGlvbik7XG4gIG5ld09wdGlvbi5kZWZhdWx0KG9wdGlvbi5kZWZhdWx0VmFsdWUsIG9wdGlvbi5kZWZhdWx0VmFsdWVEZXNjcmlwdGlvbik7XG4gIGlmIChvcHRpb24uYXJnQ2hvaWNlcykge1xuICAgIG5ld09wdGlvbi5jaG9pY2VzKG9wdGlvbi5hcmdDaG9pY2VzKTtcbiAgfVxuXG4gIG5ld09wdGlvbi5tYWtlT3B0aW9uTWFuZGF0b3J5KGZhbHNlKTtcbiAgbmV3T3B0aW9uLnByZXNldChvcHRpb24ucGFyc2VBcmcpO1xuICBuZXdPcHRpb24uY29uZmxpY3RzKFxuICAgIChvcHRpb24gYXMgT3B0aW9uICYgeyBjb25mbGljdHNXaXRoOiBzdHJpbmdbXSB9KS5jb25mbGljdHNXaXRoLFxuICApO1xuICBuZXdPcHRpb24uZW52KChvcHRpb24gYXMgT3B0aW9uICYgeyBlbnZWYXI6IHN0cmluZyB9KS5lbnZWYXIpO1xuICBpZiAob3B0aW9uLnBhcnNlQXJnKSB7XG4gICAgbmV3T3B0aW9uLmFyZ1BhcnNlcihvcHRpb24ucGFyc2VBcmcpO1xuICB9XG5cbiAgcmV0dXJuIG5ld09wdGlvbjtcbn07XG5cbi8qKlxuICogUGFydGlhbGx5IHBhcnNlIGFyZ3YgZm9yIGEgY29tbWFuZCB3aXRob3V0IGV4ZWN1dGluZyB0aGUgYWN0aW9uLiBAc2VlIHtAbGluayBDb21tYW5kLnBhcnNlfVxuICpcbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBtYXRjaGVkIGNvbW1hbmQsIHRoZSBwcm92aWRlZCBvcHRpb25zLCBhbmQgdGhlIG1pc3Npbmcgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnRpYWxQYXJzZSA9IChcbiAgY29tbWFuZDogQ29tbWFuZCxcbiAgYXJndjogcmVhZG9ubHkgc3RyaW5nW10sXG4gIG9wdGlvbnM/OiBQYXJzZU9wdGlvbnMsXG4pOiBQYXJ0aWFsUGFyc2VSZXN1bHQgPT4ge1xuICBjb25zdCBwcm92aWRlZE9wdGlvbnMgPSBuZXcgTWFwPENvbW1hbmQsIE9wdGlvblZhbHVlcz4oKTtcbiAgY29uc3QgY29tbWFuZHNNYXAgPSBuZXcgTWFwPENvbW1hbmQsIENvbW1hbmQ+KCk7XG4gIGxldCBtYXRjaGVkQ29tbWFuZDogQ29tbWFuZCB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBjcmVhdGVQYXJzZXJDb21tYW5kID0gKHBhcnNlckNvbW1hbmQ6IENvbW1hbmQsIGNvbW1hbmQ6IENvbW1hbmQpID0+IHtcbiAgICBjb21tYW5kc01hcC5zZXQocGFyc2VyQ29tbWFuZCwgY29tbWFuZCk7XG5cbiAgICBjb3B5Q29tbWFuZFNldHRpbmdzKGNvbW1hbmQsIHBhcnNlckNvbW1hbmQpO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY29tbWFuZC5vcHRpb25zKSB7XG4gICAgICBwYXJzZXJDb21tYW5kLmFkZE9wdGlvbihjbG9uZU9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBwYXJzZXJDb21tYW5kLmhvb2soXCJwcmVTdWJjb21tYW5kXCIsICh0aGlzQ29tbWFuZCwgYWN0aW9uQ29tbWFuZCkgPT4ge1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChjb21tYW5kc01hcC5nZXQocGFyc2VyQ29tbWFuZCkhLCB0aGlzQ29tbWFuZC5vcHRzKCkpO1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChjb21tYW5kc01hcC5nZXQoYWN0aW9uQ29tbWFuZCkhLCB0aGlzQ29tbWFuZC5vcHRzKCkpO1xuICAgIH0pO1xuXG4gICAgcGFyc2VyQ29tbWFuZC5hY3Rpb24oKCkgPT4ge1xuICAgICAgcHJvdmlkZWRPcHRpb25zLnNldChcbiAgICAgICAgY29tbWFuZHNNYXAuZ2V0KHBhcnNlckNvbW1hbmQpISxcbiAgICAgICAgcGFyc2VyQ29tbWFuZC5vcHRzKCksXG4gICAgICApO1xuICAgICAgbWF0Y2hlZENvbW1hbmQgPSBjb21tYW5kO1xuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBzdWJjb21tYW5kIG9mIGNvbW1hbmQuY29tbWFuZHMgYXMgQ29tbWFuZFtdKSB7XG4gICAgICBjb25zdCBwYXJzZXJTdWJjb21tYW5kID0gcGFyc2VyQ29tbWFuZFxuICAgICAgICAuY29tbWFuZChzdWJjb21tYW5kLm5hbWUoKSlcbiAgICAgICAgLmV4aXRPdmVycmlkZSgpO1xuICAgICAgY3JlYXRlUGFyc2VyQ29tbWFuZChwYXJzZXJTdWJjb21tYW5kLCBzdWJjb21tYW5kKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VyQ29tbWFuZDtcbiAgfTtcblxuICBjb25zdCBwYXJzZXJDb21tYW5kID0gY3JlYXRlUGFyc2VyQ29tbWFuZChcbiAgICBuZXcgQ29tbWFuZCgpLmV4aXRPdmVycmlkZSgpLFxuICAgIGNvbW1hbmQsXG4gICk7XG4gIHBhcnNlckNvbW1hbmQucGFyc2UoYXJndiwgb3B0aW9ucyk7XG5cbiAgY29uc3QgbWlzc2luZ09wdGlvbnMgPSBtYXRjaGVkQ29tbWFuZFxuICAgID8gZmluZE1pc3NpbmdPcHRpb25zKG1hdGNoZWRDb21tYW5kLCBwcm92aWRlZE9wdGlvbnMpXG4gICAgOiBuZXcgTWFwPENvbW1hbmQsIFNldDxzdHJpbmc+PigpO1xuXG4gIHJldHVybiB7IG1hdGNoZWRDb21tYW5kLCBtaXNzaW5nT3B0aW9ucywgcHJvdmlkZWRPcHRpb25zIH07XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLE9BQU8sZUFBZTtBQUN0QjtBQUFBLEVBRUU7QUFBQSxF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
|