@oclif/core 1.25.0 → 1.26.1
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/lib/help/util.js +1 -1
- package/lib/parser/errors.d.ts +4 -1
- package/lib/parser/errors.js +8 -1
- package/lib/parser/parse.d.ts +1 -0
- package/lib/parser/parse.js +13 -2
- package/package.json +2 -2
package/lib/help/util.js
CHANGED
|
@@ -45,7 +45,7 @@ function collateSpacedCmdIDFromArgs(argv, config) {
|
|
|
45
45
|
if (!id)
|
|
46
46
|
return false;
|
|
47
47
|
const cmd = config.findCommand(id);
|
|
48
|
-
return Boolean(cmd && (cmd.strict === false || cmd.args
|
|
48
|
+
return Boolean(cmd && (cmd.strict === false || Object.values(cmd.args ?? {}).length > 0));
|
|
49
49
|
};
|
|
50
50
|
for (const arg of argv) {
|
|
51
51
|
if (idPresent(finalizeId(arg)))
|
package/lib/parser/errors.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CLIError } from '../errors';
|
|
2
|
-
import { ParserArg, CLIParseErrorOptions, OptionFlag, Flag } from '../interfaces';
|
|
2
|
+
import { ParserArg, CLIParseErrorOptions, OptionFlag, Flag, BooleanFlag } from '../interfaces';
|
|
3
3
|
export { CLIError } from '../errors';
|
|
4
4
|
export type Validation = {
|
|
5
5
|
name: string;
|
|
@@ -40,6 +40,9 @@ export declare class UnexpectedArgsError extends CLIParseError {
|
|
|
40
40
|
export declare class FlagInvalidOptionError extends CLIParseError {
|
|
41
41
|
constructor(flag: OptionFlag<any>, input: string);
|
|
42
42
|
}
|
|
43
|
+
export declare class FailedFlagParseError extends CLIParseError {
|
|
44
|
+
constructor(flag: BooleanFlag<any> | OptionFlag<any>, errMsg: string);
|
|
45
|
+
}
|
|
43
46
|
export declare class ArgInvalidOptionError extends CLIParseError {
|
|
44
47
|
constructor(arg: ParserArg<any>, input: string);
|
|
45
48
|
}
|
package/lib/parser/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FailedFlagValidationError = exports.ArgInvalidOptionError = exports.FlagInvalidOptionError = exports.UnexpectedArgsError = exports.RequiredFlagError = exports.RequiredArgsError = exports.InvalidArgsSpecError = exports.CLIParseError = exports.CLIError = void 0;
|
|
3
|
+
exports.FailedFlagValidationError = exports.ArgInvalidOptionError = exports.FailedFlagParseError = exports.FlagInvalidOptionError = exports.UnexpectedArgsError = exports.RequiredFlagError = exports.RequiredArgsError = exports.InvalidArgsSpecError = exports.CLIParseError = exports.CLIError = void 0;
|
|
4
4
|
const errors_1 = require("../errors");
|
|
5
5
|
const deps_1 = require("./deps");
|
|
6
6
|
const util_1 = require("../config/util");
|
|
@@ -71,6 +71,13 @@ class FlagInvalidOptionError extends CLIParseError {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
exports.FlagInvalidOptionError = FlagInvalidOptionError;
|
|
74
|
+
class FailedFlagParseError extends CLIParseError {
|
|
75
|
+
constructor(flag, errMsg) {
|
|
76
|
+
const message = `Parsing --${flag.name} \n\t${errMsg}`;
|
|
77
|
+
super({ parse: {}, message });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.FailedFlagParseError = FailedFlagParseError;
|
|
74
81
|
class ArgInvalidOptionError extends CLIParseError {
|
|
75
82
|
constructor(arg, input) {
|
|
76
83
|
const message = `Expected ${input} to be one of: ${arg.options.join(', ')}`;
|
package/lib/parser/parse.d.ts
CHANGED
package/lib/parser/parse.js
CHANGED
|
@@ -158,13 +158,13 @@ class Parser {
|
|
|
158
158
|
flags[token.flag] = true;
|
|
159
159
|
}
|
|
160
160
|
// eslint-disable-next-line no-await-in-loop
|
|
161
|
-
flags[token.flag] = await
|
|
161
|
+
flags[token.flag] = await this._parseFlag(flags[token.flag], flag);
|
|
162
162
|
}
|
|
163
163
|
else {
|
|
164
164
|
const input = token.input;
|
|
165
165
|
this._validateOptions(flag, input);
|
|
166
166
|
// eslint-disable-next-line no-await-in-loop
|
|
167
|
-
const value =
|
|
167
|
+
const value = await this._parseFlag(input, flag);
|
|
168
168
|
if (flag.multiple) {
|
|
169
169
|
flags[token.flag] = flags[token.flag] || [];
|
|
170
170
|
flags[token.flag].push(...(Array.isArray(value) ? value : [value]));
|
|
@@ -201,6 +201,17 @@ class Parser {
|
|
|
201
201
|
}
|
|
202
202
|
return flags;
|
|
203
203
|
}
|
|
204
|
+
async _parseFlag(input, flag) {
|
|
205
|
+
try {
|
|
206
|
+
if (flag.type === 'boolean') {
|
|
207
|
+
return await flag.parse(input, this.context, flag);
|
|
208
|
+
}
|
|
209
|
+
return flag.parse ? await flag.parse(input, this.context, flag) : input;
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
throw new m.errors.FailedFlagParseError(flag, error.message);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
204
215
|
_validateOptions(flag, input) {
|
|
205
216
|
if (flag.options && !flag.options.includes(input))
|
|
206
217
|
throw new m.errors.FlagInvalidOptionError(flag, input);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oclif/core",
|
|
3
3
|
"description": "base library for oclif CLIs",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.26.1",
|
|
5
5
|
"author": "Salesforce",
|
|
6
6
|
"bugs": "https://github.com/oclif/core/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -114,4 +114,4 @@
|
|
|
114
114
|
"pretest": "yarn build --noEmit && tsc -p test --noEmit --skipLibCheck"
|
|
115
115
|
},
|
|
116
116
|
"types": "lib/index.d.ts"
|
|
117
|
-
}
|
|
117
|
+
}
|