Skip to content

Commit

Permalink
fix(strict mode): report default command unknown arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
mleguen committed Apr 15, 2020
1 parent 216f825 commit 07daeaf
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion lib/command.js
Expand Up @@ -196,7 +196,7 @@ module.exports = function command (yargs, usage, validation, globalMiddleware) {

// we apply validation post-hoc, so that custom
// checks get passed populated positional arguments.
if (!yargs._hasOutput()) yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error)
if (!yargs._hasOutput()) yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error, !command)

if (commandHandler.handler && !yargs._hasOutput()) {
yargs._setHasOutput()
Expand Down
4 changes: 2 additions & 2 deletions lib/validation.js
Expand Up @@ -105,7 +105,7 @@ module.exports = function validation (yargs, usage, y18n) {
}

// check for unknown arguments (strict-mode).
self.unknownArguments = function unknownArguments (argv, aliases, positionalMap) {
self.unknownArguments = function unknownArguments (argv, aliases, positionalMap, isDefaultCommand) {
const commandKeys = yargs.getCommandInstance().getCommands()
const unknown = []
const currentContext = yargs.getContext()
Expand All @@ -120,7 +120,7 @@ module.exports = function validation (yargs, usage, y18n) {
}
})

if ((currentContext.commands.length > 0) || (commandKeys.length > 0)) {
if ((currentContext.commands.length > 0) || (commandKeys.length > 0) || isDefaultCommand) {
argv._.slice(currentContext.commands.length).forEach((key) => {
if (commandKeys.indexOf(key) === -1) {
unknown.push(key)
Expand Down
4 changes: 2 additions & 2 deletions yargs.js
Expand Up @@ -1261,7 +1261,7 @@ function Yargs (processArgs, cwd, parentRequire) {
return argv
}

self._runValidation = function runValidation (argv, aliases, positionalMap, parseErrors) {
self._runValidation = function runValidation (argv, aliases, positionalMap, parseErrors, isDefaultCommand = false) {
if (parseErrors) throw new YError(parseErrors.message)
validation.nonOptionCount(argv)
validation.requiredArguments(argv)
Expand All @@ -1270,7 +1270,7 @@ function Yargs (processArgs, cwd, parentRequire) {
failedStrictCommands = validation.unknownCommands(argv, aliases, positionalMap)
}
if (strict && !failedStrictCommands) {
validation.unknownArguments(argv, aliases, positionalMap)
validation.unknownArguments(argv, aliases, positionalMap, isDefaultCommand)
}
validation.customChecks(argv, aliases)
validation.limitedChoices(argv)
Expand Down

0 comments on commit 07daeaf

Please sign in to comment.