@oclif/core 1.25.0 → 1.26.0

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.
@@ -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
  }
@@ -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(', ')}`;
@@ -18,6 +18,7 @@ export declare class Parser<T extends ParserInput, TFlags extends OutputFlags<T[
18
18
  }>;
19
19
  private _args;
20
20
  private _flags;
21
+ private _parseFlag;
21
22
  private _validateOptions;
22
23
  private _argv;
23
24
  private _debugOutput;
@@ -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 flag.parse(flags[token.flag], this.context, flag);
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 = flag.parse ? await flag.parse(input, this.context, flag) : input;
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.25.0",
4
+ "version": "1.26.0",
5
5
  "author": "Salesforce",
6
6
  "bugs": "https://github.com/oclif/core/issues",
7
7
  "dependencies": {