-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Run default command if it's not just * #1062
Conversation
I don't run them as separate executables. The commands are all configured in the same file/process. |
Oh right, sorry. I was just working on v4 so fired off a quick reply! |
I do appreciate the quick reply! 😄 |
I did a little reading and experimentation. Crikey, we have a lot of little quirks and special cases around whether there are subcommands, whether there are git-style executables, whether there are parameters... At the moment I am not sure if this is a change making things more consistent, although I agree it does not break the existing tests. This change feels a bit too special case to me on first impression. I'm not going to accept this PR yet as I do not have a clear idea (in my own mind) of sensible high-level story for what we intend for non-subcommands calls with:
I'm not planning to fix everything at once, but want to be more confident that heading in right direction. |
There's certainly a lot going on, so I understand that sentiment. I have a patch (using patch-package) to unblock me for now.
Again, I completely understand this. This is a unique issue that occurs in a very specific circumstance. Here's a minimal reproduction of what I ran into:
If the program takes only optional arguments and it has an action, that action will not be called if any commands are registered. The program's action here is treated basically the same as |
I have been doing some research today into general command handling. The original behaviour was that you could define I think when program has an action handler with defined arguments, it is reasonable and expected it get called when the calling signature matches, which would mean it should be called in @zephraph example program in opening comment. (I don't think using I am not sure whether we need to treat So I think there is a "bug" here, but I don't this is the right fix. @zephraph would you like to explore a better fix here in this PR, or open a new issue for future consideration with your problem description? |
I’m open to explore other options here. Sent with GitHawk |
Listening for I think to some extent With an action handler on the main program, I think there is a reasonable expectation that it is called if the signature matches the declared To allow separate behaviours for I haven't thought of a use case where I would want both an action handler on main, and a separate listener on |
Yeah, I think this is the right direction. If they're both defined that's indeterministic functionality and should be a runtime error. I don't think having them both would ever make sense, because you can't differentiate between the arguments on main and an invalid command. |
f5ecadd
to
b3669ee
Compare
Renamed PR while Work In Progress. 🚧 🛠 |
1651954
to
6a87525
Compare
Okay @shadowspawn I think I got something decent. I'm sure there are details we can work through.
The only thing I'm not really confident in is what happens if Line 821 in 6a87525
I removed that funky |
I went back through the old issue that added some of the previous logic and made sure we had a test that matched that logic exactly. It adds a little more confidence at least. |
* Remove openIssues test for #1062, fixed and being tested * Rework parseOptions handling of unknown arguments * First tests for parseOptions, enable prepared regression tests * Add tests for parseOptions * Add tests on program.args after calling parse * Minor update to README for changed parse behaviour * Tweak inline .parseOption examples
FYI: I am completely rewriting the command handling in #1149 informed in part by the hard work we did here to understand the interactions of the "normal" command handling and the |
This is hopefully behaving as desired in published pre-release of Commander v5.0.0 (#1163) |
Commander v5.0.0 has been released. |
*** ☝️ **Important announcement:** Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! [Find out how to migrate to Snyk and more at greenkeeper.io](https://greenkeeper.io) *** ## The dependency [commander](https://github.com/tj/commander.js) was updated from `4.1.1` to `5.0.0`. This version is **not covered** by your **current version range**. If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update. --- **Publisher:** [abetomo](https://www.npmjs.com/~abetomo) **License:** MIT <details> <summary>Release Notes for v5.0.0</summary> <h3>Added</h3> <ul> <li>support for nested commands with action-handlers ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1404480" data-permission-text="Title is private" data-url="tj/commander.js#1" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1">#1</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li><code>.addCommand()</code> for adding a separately configured command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>allow a non-executable to be set as the default command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="286464874" data-permission-text="Title is private" data-url="tj/commander.js#742" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/742/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/742">#742</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command when there are subcommands (previously only if executables) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>customise implicit help command with <code>.addHelpCommand()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display error message for unknown subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="105242369" data-permission-text="Title is private" data-url="tj/commander.js#432" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/432/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/432">#432</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display help for missing subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combined short options as single argument may include boolean flags and value flag and value (e.g. <code>-a -b -p 80</code> can be written as <code>-abp80</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.parseOption()</code> includes short flag and long flag expansions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.helpInformation()</code> returns help text as a string, previously a private routine ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560700420" data-permission-text="Title is private" data-url="tj/commander.js#1169" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1169/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1169">#1169</a>])</li> <li><code>.parse()</code> implicitly uses <code>process.argv</code> if arguments not specified ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>optionally specify where <code>.parse()</code> arguments "from", if not following node conventions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="143058334" data-permission-text="Title is private" data-url="tj/commander.js#512" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/512/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/512">#512</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>suggest help option along with unknown command error ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561944637" data-permission-text="Title is private" data-url="tj/commander.js#1179" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1179/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1179">#1179</a>])</li> <li>TypeScript definition for <code>commands</code> property of <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="562675877" data-permission-text="Title is private" data-url="tj/commander.js#1184" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1184/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1184">#1184</a>])</li> <li>export <code>program</code> property ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565709359" data-permission-text="Title is private" data-url="tj/commander.js#1195" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1195/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1195">#1195</a>])</li> <li><code>createCommand</code> factory method to simplify subclassing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565215409" data-permission-text="Title is private" data-url="tj/commander.js#1191" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1191/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1191">#1191</a>])</li> </ul> <h3>Fixed</h3> <ul> <li>preserve argument order in subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="140326981" data-permission-text="Title is private" data-url="tj/commander.js#508" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/508/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/508">#508</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="444530964" data-permission-text="Title is private" data-url="tj/commander.js#962" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/962/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/962">#962</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>do not emit <code>command:*</code> for executable subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="328564529" data-permission-text="Title is private" data-url="tj/commander.js#809" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/809/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/809">#809</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>action handler called whether or not there are non-option arguments ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="499848795" data-permission-text="Title is private" data-url="tj/commander.js#1062" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1062/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1062">#1062</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combining option short flag and value in single argument now works for subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li>only add implicit help command when it will not conflict with other uses of argument ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="551899040" data-permission-text="Title is private" data-url="tj/commander.js#1153" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1153/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1153">#1153</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command works with command aliases ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="429033898" data-permission-text="Title is private" data-url="tj/commander.js#948" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/948/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/948">#948</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>options are validated whether or not there is an action handler ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Changed</h3> <ul> <li><em>Breaking</em> <code>.args</code> contains command arguments with just recognised options removed ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="486336653" data-permission-text="Title is private" data-url="tj/commander.js#1032" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1032/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1032">#1032</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li><em>Breaking</em> display error if required argument for command is missing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="467912082" data-permission-text="Title is private" data-url="tj/commander.js#995" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/995/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/995">#995</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>tighten TypeScript definition of custom option processing function passed to <code>.option()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="537071462" data-permission-text="Title is private" data-url="tj/commander.js#1119" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1119/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1119">#1119</a>])</li> <li><em>Breaking</em> <code>.allowUnknownOption()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="322394861" data-permission-text="Title is private" data-url="tj/commander.js#802" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/802/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/802">#802</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li>unknown options included in arguments passed to command action handler</li> <li>unknown options included in <code>.args</code></li> </ul> </li> <li>only recognised option short flags and long flags are expanded (e.g. <code>-ab</code> or <code>--foo=bar</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><em>Breaking</em> <code>.parseOptions()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li><code>args</code> in returned result renamed <code>operands</code> and does not include anything after first unknown option</li> <li><code>unknown</code> in returned result has arguments after first unknown option including operands, not just options and values</li> </ul> </li> <li><em>Breaking</em> <code>.on('command:*', callback)</code> and other command events passed (changed) results from <code>.parseOptions</code>, i.e. operands and unknown ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>refactor Option from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="544020268" data-permission-text="Title is private" data-url="tj/commander.js#1133" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1133/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1133">#1133</a>])</li> <li>refactor Command from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558019087" data-permission-text="Title is private" data-url="tj/commander.js#1159" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1159/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1159">#1159</a>])</li> <li>changes to error handling ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558600050" data-permission-text="Title is private" data-url="tj/commander.js#1165" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1165/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1165">#1165</a>]) <ul> <li>throw for author error, not just display message</li> <li>preflight for variadic error</li> <li>add tips to missing subcommand executable</li> </ul> </li> <li>TypeScript fluent return types changed to be more subclass friendly, return <code>this</code> rather than <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li><code>.parseAsync</code> returns <code>Promise<this></code> to be consistent with <code>.parse()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li>update dependencies</li> </ul> <h3>Removed</h3> <ul> <li>removed EventEmitter from TypeScript definition for Command, eliminating implicit peer dependency on <code>@types/node</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548333754" data-permission-text="Title is private" data-url="tj/commander.js#1146" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1146/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1146">#1146</a>])</li> <li>removed private function <code>normalize</code> (the functionality has been integrated into <code>parseOptions</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>parseExpectedArgs</code> is now private ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Migration Tips</h3> <p>If you use <code>.on('command:*')</code> or more complicated tests to detect an unrecognised subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>program.args</code> or more complicated tests to detect a missing subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>.command('*')</code> to add a default command, you may be be able to switch to <code>isDefault:true</code> with a named command.</p> </details> <details> <summary>Commits</summary> <p>The new version differs by 53 commits.</p> <ul> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2aad525640d5885d9f51ae8dfe07a01c280cf4e3"><code>2aad525</code></a> <code>Update dependencies (#1214)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f86d8781655720eb1429d1b9c883e8c357f7c8c3"><code>f86d878</code></a> <code>Add cli keyword (#1213)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/83af0fd0488dc6f4568435050e7d3d7e0ab11b5b"><code>83af0fd</code></a> <code>Prepare for 5.0.0 (#1211)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f14df0709173abf9ab4732064d77bce34f60fb05"><code>f14df07</code></a> <code>Add eslint settings for TypeScript (#1205)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/95e0d193ec02859f1bdcb08785e21f86942fc5e5"><code>95e0d19</code></a> <code>5.0.0-4</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/bd5a49e9d5ca4f4cf1c8bf60e3567ab5d5e67039"><code>bd5a49e</code></a> <code>Add factory to CHANGELOG</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/8c3dd6ffe90b566c5cabb277f8d9c57a8bfb348b"><code>8c3dd6f</code></a> <code>createCommand factory routine (#1191)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3c9f33fd8440aab061cbb0484712ed77c54df03a"><code>3c9f33f</code></a> <code>Say we support LTS, so do not need to update when node changes (#1204)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3cf8cff2a91d1d38da2ea9e5ace40230f1d9a813"><code>3cf8cff</code></a> <code>Expand typescript checks (#1198)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/a3f453f11cf3ad69d2b15ce82efdfd3af53efe22"><code>a3f453f</code></a> <code>5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/87bfca690eda98a0573b20569f87675466c23dd8"><code>87bfca6</code></a> <code>Add CHANGELOG entries for 5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/1757564a0f6034f803e1e638c6cf34ef64b77775"><code>1757564</code></a> <code>Use a tidier global command (#1200)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/0a50bd6c7696b6c5217258d38613f58684d1585b"><code>0a50bd6</code></a> <code>Add program to exports (#1195)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/77e511fc17cf5857520b0740737d0fc27acf736c"><code>77e511f</code></a> <code>Enable TypeScript checking of javascript, and resolve or suppress errors (#1194)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2491c763e1ba058a5a877d7aa4b30427de83e844"><code>2491c76</code></a> <code>URLEncode several chinese toc link</code></li> </ul> <p>There are 53 commits in total.</p> <p>See the <a href="https://urls.greenkeeper.io/tj/commander.js/compare/d5186ba4b9b64a72cd685fccbb9ec5d0ec0c430d...2aad525640d5885d9f51ae8dfe07a01c280cf4e3">full diff</a></p> </details> --- <details> <summary>FAQ and help</summary> There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new). </details> --- Your [Greenkeeper](https://greenkeeper.io) bot 🌴 Co-authored-by: greenkeeper[bot] <23040076+greenkeeper[bot]@users.noreply.github.com>
*** ☝️ **Important announcement:** Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! [Find out how to migrate to Snyk and more at greenkeeper.io](https://greenkeeper.io) *** ## The dependency [commander](https://github.com/tj/commander.js) was updated from `4.1.1` to `5.0.0`. This version is **not covered** by your **current version range**. If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update. --- **Publisher:** [abetomo](https://www.npmjs.com/~abetomo) **License:** MIT <details> <summary>Release Notes for v5.0.0</summary> <h3>Added</h3> <ul> <li>support for nested commands with action-handlers ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1404480" data-permission-text="Title is private" data-url="tj/commander.js#1" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1">#1</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li><code>.addCommand()</code> for adding a separately configured command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>allow a non-executable to be set as the default command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="286464874" data-permission-text="Title is private" data-url="tj/commander.js#742" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/742/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/742">#742</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command when there are subcommands (previously only if executables) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>customise implicit help command with <code>.addHelpCommand()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display error message for unknown subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="105242369" data-permission-text="Title is private" data-url="tj/commander.js#432" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/432/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/432">#432</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display help for missing subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combined short options as single argument may include boolean flags and value flag and value (e.g. <code>-a -b -p 80</code> can be written as <code>-abp80</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.parseOption()</code> includes short flag and long flag expansions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.helpInformation()</code> returns help text as a string, previously a private routine ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560700420" data-permission-text="Title is private" data-url="tj/commander.js#1169" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1169/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1169">#1169</a>])</li> <li><code>.parse()</code> implicitly uses <code>process.argv</code> if arguments not specified ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>optionally specify where <code>.parse()</code> arguments "from", if not following node conventions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="143058334" data-permission-text="Title is private" data-url="tj/commander.js#512" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/512/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/512">#512</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>suggest help option along with unknown command error ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561944637" data-permission-text="Title is private" data-url="tj/commander.js#1179" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1179/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1179">#1179</a>])</li> <li>TypeScript definition for <code>commands</code> property of <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="562675877" data-permission-text="Title is private" data-url="tj/commander.js#1184" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1184/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1184">#1184</a>])</li> <li>export <code>program</code> property ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565709359" data-permission-text="Title is private" data-url="tj/commander.js#1195" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1195/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1195">#1195</a>])</li> <li><code>createCommand</code> factory method to simplify subclassing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565215409" data-permission-text="Title is private" data-url="tj/commander.js#1191" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1191/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1191">#1191</a>])</li> </ul> <h3>Fixed</h3> <ul> <li>preserve argument order in subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="140326981" data-permission-text="Title is private" data-url="tj/commander.js#508" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/508/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/508">#508</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="444530964" data-permission-text="Title is private" data-url="tj/commander.js#962" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/962/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/962">#962</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>do not emit <code>command:*</code> for executable subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="328564529" data-permission-text="Title is private" data-url="tj/commander.js#809" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/809/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/809">#809</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>action handler called whether or not there are non-option arguments ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="499848795" data-permission-text="Title is private" data-url="tj/commander.js#1062" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1062/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1062">#1062</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combining option short flag and value in single argument now works for subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li>only add implicit help command when it will not conflict with other uses of argument ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="551899040" data-permission-text="Title is private" data-url="tj/commander.js#1153" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1153/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1153">#1153</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command works with command aliases ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="429033898" data-permission-text="Title is private" data-url="tj/commander.js#948" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/948/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/948">#948</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>options are validated whether or not there is an action handler ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Changed</h3> <ul> <li><em>Breaking</em> <code>.args</code> contains command arguments with just recognised options removed ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="486336653" data-permission-text="Title is private" data-url="tj/commander.js#1032" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1032/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1032">#1032</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li><em>Breaking</em> display error if required argument for command is missing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="467912082" data-permission-text="Title is private" data-url="tj/commander.js#995" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/995/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/995">#995</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>tighten TypeScript definition of custom option processing function passed to <code>.option()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="537071462" data-permission-text="Title is private" data-url="tj/commander.js#1119" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1119/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1119">#1119</a>])</li> <li><em>Breaking</em> <code>.allowUnknownOption()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="322394861" data-permission-text="Title is private" data-url="tj/commander.js#802" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/802/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/802">#802</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li>unknown options included in arguments passed to command action handler</li> <li>unknown options included in <code>.args</code></li> </ul> </li> <li>only recognised option short flags and long flags are expanded (e.g. <code>-ab</code> or <code>--foo=bar</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><em>Breaking</em> <code>.parseOptions()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li><code>args</code> in returned result renamed <code>operands</code> and does not include anything after first unknown option</li> <li><code>unknown</code> in returned result has arguments after first unknown option including operands, not just options and values</li> </ul> </li> <li><em>Breaking</em> <code>.on('command:*', callback)</code> and other command events passed (changed) results from <code>.parseOptions</code>, i.e. operands and unknown ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>refactor Option from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="544020268" data-permission-text="Title is private" data-url="tj/commander.js#1133" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1133/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1133">#1133</a>])</li> <li>refactor Command from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558019087" data-permission-text="Title is private" data-url="tj/commander.js#1159" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1159/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1159">#1159</a>])</li> <li>changes to error handling ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558600050" data-permission-text="Title is private" data-url="tj/commander.js#1165" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1165/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1165">#1165</a>]) <ul> <li>throw for author error, not just display message</li> <li>preflight for variadic error</li> <li>add tips to missing subcommand executable</li> </ul> </li> <li>TypeScript fluent return types changed to be more subclass friendly, return <code>this</code> rather than <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li><code>.parseAsync</code> returns <code>Promise<this></code> to be consistent with <code>.parse()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li>update dependencies</li> </ul> <h3>Removed</h3> <ul> <li>removed EventEmitter from TypeScript definition for Command, eliminating implicit peer dependency on <code>@types/node</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548333754" data-permission-text="Title is private" data-url="tj/commander.js#1146" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1146/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1146">#1146</a>])</li> <li>removed private function <code>normalize</code> (the functionality has been integrated into <code>parseOptions</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>parseExpectedArgs</code> is now private ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Migration Tips</h3> <p>If you use <code>.on('command:*')</code> or more complicated tests to detect an unrecognised subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>program.args</code> or more complicated tests to detect a missing subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>.command('*')</code> to add a default command, you may be be able to switch to <code>isDefault:true</code> with a named command.</p> </details> <details> <summary>Commits</summary> <p>The new version differs by 53 commits.</p> <ul> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2aad525640d5885d9f51ae8dfe07a01c280cf4e3"><code>2aad525</code></a> <code>Update dependencies (#1214)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f86d8781655720eb1429d1b9c883e8c357f7c8c3"><code>f86d878</code></a> <code>Add cli keyword (#1213)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/83af0fd0488dc6f4568435050e7d3d7e0ab11b5b"><code>83af0fd</code></a> <code>Prepare for 5.0.0 (#1211)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f14df0709173abf9ab4732064d77bce34f60fb05"><code>f14df07</code></a> <code>Add eslint settings for TypeScript (#1205)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/95e0d193ec02859f1bdcb08785e21f86942fc5e5"><code>95e0d19</code></a> <code>5.0.0-4</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/bd5a49e9d5ca4f4cf1c8bf60e3567ab5d5e67039"><code>bd5a49e</code></a> <code>Add factory to CHANGELOG</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/8c3dd6ffe90b566c5cabb277f8d9c57a8bfb348b"><code>8c3dd6f</code></a> <code>createCommand factory routine (#1191)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3c9f33fd8440aab061cbb0484712ed77c54df03a"><code>3c9f33f</code></a> <code>Say we support LTS, so do not need to update when node changes (#1204)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3cf8cff2a91d1d38da2ea9e5ace40230f1d9a813"><code>3cf8cff</code></a> <code>Expand typescript checks (#1198)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/a3f453f11cf3ad69d2b15ce82efdfd3af53efe22"><code>a3f453f</code></a> <code>5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/87bfca690eda98a0573b20569f87675466c23dd8"><code>87bfca6</code></a> <code>Add CHANGELOG entries for 5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/1757564a0f6034f803e1e638c6cf34ef64b77775"><code>1757564</code></a> <code>Use a tidier global command (#1200)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/0a50bd6c7696b6c5217258d38613f58684d1585b"><code>0a50bd6</code></a> <code>Add program to exports (#1195)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/77e511fc17cf5857520b0740737d0fc27acf736c"><code>77e511f</code></a> <code>Enable TypeScript checking of javascript, and resolve or suppress errors (#1194)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2491c763e1ba058a5a877d7aa4b30427de83e844"><code>2491c76</code></a> <code>URLEncode several chinese toc link</code></li> </ul> <p>There are 53 commits in total.</p> <p>See the <a href="https://urls.greenkeeper.io/tj/commander.js/compare/d5186ba4b9b64a72cd685fccbb9ec5d0ec0c430d...2aad525640d5885d9f51ae8dfe07a01c280cf4e3">full diff</a></p> </details> --- <details> <summary>FAQ and help</summary> There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new). </details> --- Your [Greenkeeper](https://greenkeeper.io) bot 🌴 Co-authored-by: greenkeeper[bot] <23040076+greenkeeper[bot]@users.noreply.github.com>
* *** ☝️ **Important announcement:** Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! [Find out how to migrate to Snyk and more at greenkeeper.io](https://greenkeeper.io) *** ## The dependency [commander](https://github.com/tj/commander.js) was updated from `4.1.1` to `5.0.0`. This version is **not covered** by your **current version range**. If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update. --- **Publisher:** [abetomo](https://www.npmjs.com/~abetomo) **License:** MIT <details> <summary>Release Notes for v5.0.0</summary> <h3>Added</h3> <ul> <li>support for nested commands with action-handlers ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1404480" data-permission-text="Title is private" data-url="tj/commander.js#1" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1">#1</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li><code>.addCommand()</code> for adding a separately configured command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>allow a non-executable to be set as the default command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="286464874" data-permission-text="Title is private" data-url="tj/commander.js#742" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/742/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/742">#742</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command when there are subcommands (previously only if executables) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>customise implicit help command with <code>.addHelpCommand()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display error message for unknown subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="105242369" data-permission-text="Title is private" data-url="tj/commander.js#432" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/432/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/432">#432</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display help for missing subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combined short options as single argument may include boolean flags and value flag and value (e.g. <code>-a -b -p 80</code> can be written as <code>-abp80</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.parseOption()</code> includes short flag and long flag expansions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.helpInformation()</code> returns help text as a string, previously a private routine ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560700420" data-permission-text="Title is private" data-url="tj/commander.js#1169" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1169/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1169">#1169</a>])</li> <li><code>.parse()</code> implicitly uses <code>process.argv</code> if arguments not specified ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>optionally specify where <code>.parse()</code> arguments "from", if not following node conventions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="143058334" data-permission-text="Title is private" data-url="tj/commander.js#512" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/512/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/512">#512</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>suggest help option along with unknown command error ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561944637" data-permission-text="Title is private" data-url="tj/commander.js#1179" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1179/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1179">#1179</a>])</li> <li>TypeScript definition for <code>commands</code> property of <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="562675877" data-permission-text="Title is private" data-url="tj/commander.js#1184" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1184/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1184">#1184</a>])</li> <li>export <code>program</code> property ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565709359" data-permission-text="Title is private" data-url="tj/commander.js#1195" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1195/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1195">#1195</a>])</li> <li><code>createCommand</code> factory method to simplify subclassing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565215409" data-permission-text="Title is private" data-url="tj/commander.js#1191" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1191/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1191">#1191</a>])</li> </ul> <h3>Fixed</h3> <ul> <li>preserve argument order in subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="140326981" data-permission-text="Title is private" data-url="tj/commander.js#508" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/508/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/508">#508</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="444530964" data-permission-text="Title is private" data-url="tj/commander.js#962" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/962/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/962">#962</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>do not emit <code>command:*</code> for executable subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="328564529" data-permission-text="Title is private" data-url="tj/commander.js#809" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/809/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/809">#809</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>action handler called whether or not there are non-option arguments ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="499848795" data-permission-text="Title is private" data-url="tj/commander.js#1062" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1062/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1062">#1062</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combining option short flag and value in single argument now works for subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li>only add implicit help command when it will not conflict with other uses of argument ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="551899040" data-permission-text="Title is private" data-url="tj/commander.js#1153" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1153/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1153">#1153</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command works with command aliases ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="429033898" data-permission-text="Title is private" data-url="tj/commander.js#948" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/948/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/948">#948</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>options are validated whether or not there is an action handler ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Changed</h3> <ul> <li><em>Breaking</em> <code>.args</code> contains command arguments with just recognised options removed ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="486336653" data-permission-text="Title is private" data-url="tj/commander.js#1032" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1032/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1032">#1032</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li><em>Breaking</em> display error if required argument for command is missing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="467912082" data-permission-text="Title is private" data-url="tj/commander.js#995" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/995/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/995">#995</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>tighten TypeScript definition of custom option processing function passed to <code>.option()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="537071462" data-permission-text="Title is private" data-url="tj/commander.js#1119" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1119/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1119">#1119</a>])</li> <li><em>Breaking</em> <code>.allowUnknownOption()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="322394861" data-permission-text="Title is private" data-url="tj/commander.js#802" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/802/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/802">#802</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li>unknown options included in arguments passed to command action handler</li> <li>unknown options included in <code>.args</code></li> </ul> </li> <li>only recognised option short flags and long flags are expanded (e.g. <code>-ab</code> or <code>--foo=bar</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><em>Breaking</em> <code>.parseOptions()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li><code>args</code> in returned result renamed <code>operands</code> and does not include anything after first unknown option</li> <li><code>unknown</code> in returned result has arguments after first unknown option including operands, not just options and values</li> </ul> </li> <li><em>Breaking</em> <code>.on('command:*', callback)</code> and other command events passed (changed) results from <code>.parseOptions</code>, i.e. operands and unknown ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>refactor Option from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="544020268" data-permission-text="Title is private" data-url="tj/commander.js#1133" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1133/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1133">#1133</a>])</li> <li>refactor Command from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558019087" data-permission-text="Title is private" data-url="tj/commander.js#1159" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1159/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1159">#1159</a>])</li> <li>changes to error handling ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558600050" data-permission-text="Title is private" data-url="tj/commander.js#1165" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1165/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1165">#1165</a>]) <ul> <li>throw for author error, not just display message</li> <li>preflight for variadic error</li> <li>add tips to missing subcommand executable</li> </ul> </li> <li>TypeScript fluent return types changed to be more subclass friendly, return <code>this</code> rather than <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li><code>.parseAsync</code> returns <code>Promise<this></code> to be consistent with <code>.parse()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li>update dependencies</li> </ul> <h3>Removed</h3> <ul> <li>removed EventEmitter from TypeScript definition for Command, eliminating implicit peer dependency on <code>@types/node</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548333754" data-permission-text="Title is private" data-url="tj/commander.js#1146" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1146/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1146">#1146</a>])</li> <li>removed private function <code>normalize</code> (the functionality has been integrated into <code>parseOptions</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>parseExpectedArgs</code> is now private ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Migration Tips</h3> <p>If you use <code>.on('command:*')</code> or more complicated tests to detect an unrecognised subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>program.args</code> or more complicated tests to detect a missing subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>.command('*')</code> to add a default command, you may be be able to switch to <code>isDefault:true</code> with a named command.</p> </details> <details> <summary>Commits</summary> <p>The new version differs by 53 commits.</p> <ul> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2aad525640d5885d9f51ae8dfe07a01c280cf4e3"><code>2aad525</code></a> <code>Update dependencies (#1214)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f86d8781655720eb1429d1b9c883e8c357f7c8c3"><code>f86d878</code></a> <code>Add cli keyword (#1213)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/83af0fd0488dc6f4568435050e7d3d7e0ab11b5b"><code>83af0fd</code></a> <code>Prepare for 5.0.0 (#1211)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f14df0709173abf9ab4732064d77bce34f60fb05"><code>f14df07</code></a> <code>Add eslint settings for TypeScript (#1205)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/95e0d193ec02859f1bdcb08785e21f86942fc5e5"><code>95e0d19</code></a> <code>5.0.0-4</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/bd5a49e9d5ca4f4cf1c8bf60e3567ab5d5e67039"><code>bd5a49e</code></a> <code>Add factory to CHANGELOG</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/8c3dd6ffe90b566c5cabb277f8d9c57a8bfb348b"><code>8c3dd6f</code></a> <code>createCommand factory routine (#1191)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3c9f33fd8440aab061cbb0484712ed77c54df03a"><code>3c9f33f</code></a> <code>Say we support LTS, so do not need to update when node changes (#1204)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3cf8cff2a91d1d38da2ea9e5ace40230f1d9a813"><code>3cf8cff</code></a> <code>Expand typescript checks (#1198)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/a3f453f11cf3ad69d2b15ce82efdfd3af53efe22"><code>a3f453f</code></a> <code>5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/87bfca690eda98a0573b20569f87675466c23dd8"><code>87bfca6</code></a> <code>Add CHANGELOG entries for 5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/1757564a0f6034f803e1e638c6cf34ef64b77775"><code>1757564</code></a> <code>Use a tidier global command (#1200)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/0a50bd6c7696b6c5217258d38613f58684d1585b"><code>0a50bd6</code></a> <code>Add program to exports (#1195)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/77e511fc17cf5857520b0740737d0fc27acf736c"><code>77e511f</code></a> <code>Enable TypeScript checking of javascript, and resolve or suppress errors (#1194)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2491c763e1ba058a5a877d7aa4b30427de83e844"><code>2491c76</code></a> <code>URLEncode several chinese toc link</code></li> </ul> <p>There are 53 commits in total.</p> <p>See the <a href="https://urls.greenkeeper.io/tj/commander.js/compare/d5186ba4b9b64a72cd685fccbb9ec5d0ec0c430d...2aad525640d5885d9f51ae8dfe07a01c280cf4e3">full diff</a></p> </details> --- <details> <summary>FAQ and help</summary> There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new). </details> --- Your [Greenkeeper](https://greenkeeper.io) bot 🌴 * chore(package): update lockfile package-lock.json Co-authored-by: greenkeeper[bot] <23040076+greenkeeper[bot]@users.noreply.github.com>
*** ☝️ **Important announcement:** Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! [Find out how to migrate to Snyk and more at greenkeeper.io](https://greenkeeper.io) *** ## The dependency [commander](https://github.com/tj/commander.js) was updated from `4.1.1` to `5.0.0`. This version is **not covered** by your **current version range**. If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update. --- **Publisher:** [abetomo](https://www.npmjs.com/~abetomo) **License:** MIT <details> <summary>Release Notes for v5.0.0</summary> <h3>Added</h3> <ul> <li>support for nested commands with action-handlers ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1404480" data-permission-text="Title is private" data-url="tj/commander.js#1" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1">#1</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li><code>.addCommand()</code> for adding a separately configured command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>allow a non-executable to be set as the default command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="286464874" data-permission-text="Title is private" data-url="tj/commander.js#742" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/742/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/742">#742</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command when there are subcommands (previously only if executables) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>customise implicit help command with <code>.addHelpCommand()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display error message for unknown subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="105242369" data-permission-text="Title is private" data-url="tj/commander.js#432" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/432/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/432">#432</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display help for missing subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combined short options as single argument may include boolean flags and value flag and value (e.g. <code>-a -b -p 80</code> can be written as <code>-abp80</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.parseOption()</code> includes short flag and long flag expansions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.helpInformation()</code> returns help text as a string, previously a private routine ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560700420" data-permission-text="Title is private" data-url="tj/commander.js#1169" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1169/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1169">#1169</a>])</li> <li><code>.parse()</code> implicitly uses <code>process.argv</code> if arguments not specified ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>optionally specify where <code>.parse()</code> arguments "from", if not following node conventions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="143058334" data-permission-text="Title is private" data-url="tj/commander.js#512" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/512/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/512">#512</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>suggest help option along with unknown command error ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561944637" data-permission-text="Title is private" data-url="tj/commander.js#1179" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1179/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1179">#1179</a>])</li> <li>TypeScript definition for <code>commands</code> property of <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="562675877" data-permission-text="Title is private" data-url="tj/commander.js#1184" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1184/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1184">#1184</a>])</li> <li>export <code>program</code> property ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565709359" data-permission-text="Title is private" data-url="tj/commander.js#1195" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1195/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1195">#1195</a>])</li> <li><code>createCommand</code> factory method to simplify subclassing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565215409" data-permission-text="Title is private" data-url="tj/commander.js#1191" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1191/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1191">#1191</a>])</li> </ul> <h3>Fixed</h3> <ul> <li>preserve argument order in subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="140326981" data-permission-text="Title is private" data-url="tj/commander.js#508" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/508/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/508">#508</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="444530964" data-permission-text="Title is private" data-url="tj/commander.js#962" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/962/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/962">#962</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>do not emit <code>command:*</code> for executable subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="328564529" data-permission-text="Title is private" data-url="tj/commander.js#809" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/809/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/809">#809</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>action handler called whether or not there are non-option arguments ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="499848795" data-permission-text="Title is private" data-url="tj/commander.js#1062" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1062/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1062">#1062</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combining option short flag and value in single argument now works for subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li>only add implicit help command when it will not conflict with other uses of argument ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="551899040" data-permission-text="Title is private" data-url="tj/commander.js#1153" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1153/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1153">#1153</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command works with command aliases ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="429033898" data-permission-text="Title is private" data-url="tj/commander.js#948" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/948/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/948">#948</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>options are validated whether or not there is an action handler ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Changed</h3> <ul> <li><em>Breaking</em> <code>.args</code> contains command arguments with just recognised options removed ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="486336653" data-permission-text="Title is private" data-url="tj/commander.js#1032" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1032/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1032">#1032</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li><em>Breaking</em> display error if required argument for command is missing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="467912082" data-permission-text="Title is private" data-url="tj/commander.js#995" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/995/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/995">#995</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>tighten TypeScript definition of custom option processing function passed to <code>.option()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="537071462" data-permission-text="Title is private" data-url="tj/commander.js#1119" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1119/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1119">#1119</a>])</li> <li><em>Breaking</em> <code>.allowUnknownOption()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="322394861" data-permission-text="Title is private" data-url="tj/commander.js#802" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/802/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/802">#802</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li>unknown options included in arguments passed to command action handler</li> <li>unknown options included in <code>.args</code></li> </ul> </li> <li>only recognised option short flags and long flags are expanded (e.g. <code>-ab</code> or <code>--foo=bar</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><em>Breaking</em> <code>.parseOptions()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li><code>args</code> in returned result renamed <code>operands</code> and does not include anything after first unknown option</li> <li><code>unknown</code> in returned result has arguments after first unknown option including operands, not just options and values</li> </ul> </li> <li><em>Breaking</em> <code>.on('command:*', callback)</code> and other command events passed (changed) results from <code>.parseOptions</code>, i.e. operands and unknown ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>refactor Option from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="544020268" data-permission-text="Title is private" data-url="tj/commander.js#1133" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1133/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1133">#1133</a>])</li> <li>refactor Command from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558019087" data-permission-text="Title is private" data-url="tj/commander.js#1159" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1159/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1159">#1159</a>])</li> <li>changes to error handling ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558600050" data-permission-text="Title is private" data-url="tj/commander.js#1165" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1165/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1165">#1165</a>]) <ul> <li>throw for author error, not just display message</li> <li>preflight for variadic error</li> <li>add tips to missing subcommand executable</li> </ul> </li> <li>TypeScript fluent return types changed to be more subclass friendly, return <code>this</code> rather than <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li><code>.parseAsync</code> returns <code>Promise<this></code> to be consistent with <code>.parse()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li>update dependencies</li> </ul> <h3>Removed</h3> <ul> <li>removed EventEmitter from TypeScript definition for Command, eliminating implicit peer dependency on <code>@types/node</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548333754" data-permission-text="Title is private" data-url="tj/commander.js#1146" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1146/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1146">#1146</a>])</li> <li>removed private function <code>normalize</code> (the functionality has been integrated into <code>parseOptions</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>parseExpectedArgs</code> is now private ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Migration Tips</h3> <p>If you use <code>.on('command:*')</code> or more complicated tests to detect an unrecognised subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>program.args</code> or more complicated tests to detect a missing subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>.command('*')</code> to add a default command, you may be be able to switch to <code>isDefault:true</code> with a named command.</p> </details> <details> <summary>Commits</summary> <p>The new version differs by 53 commits.</p> <ul> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2aad525640d5885d9f51ae8dfe07a01c280cf4e3"><code>2aad525</code></a> <code>Update dependencies (#1214)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f86d8781655720eb1429d1b9c883e8c357f7c8c3"><code>f86d878</code></a> <code>Add cli keyword (#1213)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/83af0fd0488dc6f4568435050e7d3d7e0ab11b5b"><code>83af0fd</code></a> <code>Prepare for 5.0.0 (#1211)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f14df0709173abf9ab4732064d77bce34f60fb05"><code>f14df07</code></a> <code>Add eslint settings for TypeScript (#1205)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/95e0d193ec02859f1bdcb08785e21f86942fc5e5"><code>95e0d19</code></a> <code>5.0.0-4</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/bd5a49e9d5ca4f4cf1c8bf60e3567ab5d5e67039"><code>bd5a49e</code></a> <code>Add factory to CHANGELOG</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/8c3dd6ffe90b566c5cabb277f8d9c57a8bfb348b"><code>8c3dd6f</code></a> <code>createCommand factory routine (#1191)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3c9f33fd8440aab061cbb0484712ed77c54df03a"><code>3c9f33f</code></a> <code>Say we support LTS, so do not need to update when node changes (#1204)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3cf8cff2a91d1d38da2ea9e5ace40230f1d9a813"><code>3cf8cff</code></a> <code>Expand typescript checks (#1198)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/a3f453f11cf3ad69d2b15ce82efdfd3af53efe22"><code>a3f453f</code></a> <code>5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/87bfca690eda98a0573b20569f87675466c23dd8"><code>87bfca6</code></a> <code>Add CHANGELOG entries for 5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/1757564a0f6034f803e1e638c6cf34ef64b77775"><code>1757564</code></a> <code>Use a tidier global command (#1200)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/0a50bd6c7696b6c5217258d38613f58684d1585b"><code>0a50bd6</code></a> <code>Add program to exports (#1195)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/77e511fc17cf5857520b0740737d0fc27acf736c"><code>77e511f</code></a> <code>Enable TypeScript checking of javascript, and resolve or suppress errors (#1194)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2491c763e1ba058a5a877d7aa4b30427de83e844"><code>2491c76</code></a> <code>URLEncode several chinese toc link</code></li> </ul> <p>There are 53 commits in total.</p> <p>See the <a href="https://urls.greenkeeper.io/tj/commander.js/compare/d5186ba4b9b64a72cd685fccbb9ec5d0ec0c430d...2aad525640d5885d9f51ae8dfe07a01c280cf4e3">full diff</a></p> </details> --- <details> <summary>FAQ and help</summary> There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new). </details> --- Your [Greenkeeper](https://greenkeeper.io) bot 🌴 Co-authored-by: greenkeeper[bot] <23040076+greenkeeper[bot]@users.noreply.github.com>
*** ☝️ **Important announcement:** Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! [Find out how to migrate to Snyk and more at greenkeeper.io](https://greenkeeper.io) *** ## The dependency [commander](https://github.com/tj/commander.js) was updated from `4.1.1` to `5.0.0`. This version is **not covered** by your **current version range**. If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update. --- **Publisher:** [abetomo](https://www.npmjs.com/~abetomo) **License:** MIT <details> <summary>Release Notes for v5.0.0</summary> <h3>Added</h3> <ul> <li>support for nested commands with action-handlers ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1404480" data-permission-text="Title is private" data-url="tj/commander.js#1" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1">#1</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li><code>.addCommand()</code> for adding a separately configured command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="294713045" data-permission-text="Title is private" data-url="tj/commander.js#764" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/764/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/764">#764</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>allow a non-executable to be set as the default command ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="286464874" data-permission-text="Title is private" data-url="tj/commander.js#742" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/742/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/742">#742</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command when there are subcommands (previously only if executables) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>customise implicit help command with <code>.addHelpCommand()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display error message for unknown subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="105242369" data-permission-text="Title is private" data-url="tj/commander.js#432" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/432/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/432">#432</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>display help for missing subcommand, by default ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="516507885" data-permission-text="Title is private" data-url="tj/commander.js#1088" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1088/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1088">#1088</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combined short options as single argument may include boolean flags and value flag and value (e.g. <code>-a -b -p 80</code> can be written as <code>-abp80</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.parseOption()</code> includes short flag and long flag expansions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>.helpInformation()</code> returns help text as a string, previously a private routine ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560700420" data-permission-text="Title is private" data-url="tj/commander.js#1169" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1169/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1169">#1169</a>])</li> <li><code>.parse()</code> implicitly uses <code>process.argv</code> if arguments not specified ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>optionally specify where <code>.parse()</code> arguments "from", if not following node conventions ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="143058334" data-permission-text="Title is private" data-url="tj/commander.js#512" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/512/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/512">#512</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="560848429" data-permission-text="Title is private" data-url="tj/commander.js#1172" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1172/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1172">#1172</a>])</li> <li>suggest help option along with unknown command error ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561944637" data-permission-text="Title is private" data-url="tj/commander.js#1179" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1179/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1179">#1179</a>])</li> <li>TypeScript definition for <code>commands</code> property of <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="562675877" data-permission-text="Title is private" data-url="tj/commander.js#1184" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1184/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1184">#1184</a>])</li> <li>export <code>program</code> property ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565709359" data-permission-text="Title is private" data-url="tj/commander.js#1195" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1195/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1195">#1195</a>])</li> <li><code>createCommand</code> factory method to simplify subclassing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="565215409" data-permission-text="Title is private" data-url="tj/commander.js#1191" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1191/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1191">#1191</a>])</li> </ul> <h3>Fixed</h3> <ul> <li>preserve argument order in subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="140326981" data-permission-text="Title is private" data-url="tj/commander.js#508" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/508/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/508">#508</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="444530964" data-permission-text="Title is private" data-url="tj/commander.js#962" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/962/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/962">#962</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>do not emit <code>command:*</code> for executable subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="328564529" data-permission-text="Title is private" data-url="tj/commander.js#809" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/809/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/809">#809</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>action handler called whether or not there are non-option arguments ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="499848795" data-permission-text="Title is private" data-url="tj/commander.js#1062" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1062/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1062">#1062</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>combining option short flag and value in single argument now works for subcommands ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li>only add implicit help command when it will not conflict with other uses of argument ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="551899040" data-permission-text="Title is private" data-url="tj/commander.js#1153" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1153/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1153">#1153</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>implicit help command works with command aliases ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="429033898" data-permission-text="Title is private" data-url="tj/commander.js#948" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/948/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/948">#948</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>options are validated whether or not there is an action handler ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Changed</h3> <ul> <li><em>Breaking</em> <code>.args</code> contains command arguments with just recognised options removed ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="486336653" data-permission-text="Title is private" data-url="tj/commander.js#1032" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/1032/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/1032">#1032</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li><em>Breaking</em> display error if required argument for command is missing ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="467912082" data-permission-text="Title is private" data-url="tj/commander.js#995" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/995/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/995">#995</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> <li>tighten TypeScript definition of custom option processing function passed to <code>.option()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="537071462" data-permission-text="Title is private" data-url="tj/commander.js#1119" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1119/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1119">#1119</a>])</li> <li><em>Breaking</em> <code>.allowUnknownOption()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="322394861" data-permission-text="Title is private" data-url="tj/commander.js#802" data-hovercard-type="issue" data-hovercard-url="/tj/commander.js/issues/802/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/issues/802">#802</a>] [<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li>unknown options included in arguments passed to command action handler</li> <li>unknown options included in <code>.args</code></li> </ul> </li> <li>only recognised option short flags and long flags are expanded (e.g. <code>-ab</code> or <code>--foo=bar</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><em>Breaking</em> <code>.parseOptions()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>]) <ul> <li><code>args</code> in returned result renamed <code>operands</code> and does not include anything after first unknown option</li> <li><code>unknown</code> in returned result has arguments after first unknown option including operands, not just options and values</li> </ul> </li> <li><em>Breaking</em> <code>.on('command:*', callback)</code> and other command events passed (changed) results from <code>.parseOptions</code>, i.e. operands and unknown ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="545350198" data-permission-text="Title is private" data-url="tj/commander.js#1138" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1138/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1138">#1138</a>])</li> <li>refactor Option from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="544020268" data-permission-text="Title is private" data-url="tj/commander.js#1133" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1133/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1133">#1133</a>])</li> <li>refactor Command from prototype to class ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558019087" data-permission-text="Title is private" data-url="tj/commander.js#1159" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1159/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1159">#1159</a>])</li> <li>changes to error handling ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="558600050" data-permission-text="Title is private" data-url="tj/commander.js#1165" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1165/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1165">#1165</a>]) <ul> <li>throw for author error, not just display message</li> <li>preflight for variadic error</li> <li>add tips to missing subcommand executable</li> </ul> </li> <li>TypeScript fluent return types changed to be more subclass friendly, return <code>this</code> rather than <code>Command</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li><code>.parseAsync</code> returns <code>Promise<this></code> to be consistent with <code>.parse()</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="561948792" data-permission-text="Title is private" data-url="tj/commander.js#1180" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1180/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1180">#1180</a>])</li> <li>update dependencies</li> </ul> <h3>Removed</h3> <ul> <li>removed EventEmitter from TypeScript definition for Command, eliminating implicit peer dependency on <code>@types/node</code> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548333754" data-permission-text="Title is private" data-url="tj/commander.js#1146" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1146/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1146">#1146</a>])</li> <li>removed private function <code>normalize</code> (the functionality has been integrated into <code>parseOptions</code>) ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="547256656" data-permission-text="Title is private" data-url="tj/commander.js#1145" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1145/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1145">#1145</a>])</li> <li><code>parseExpectedArgs</code> is now private ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="548552171" data-permission-text="Title is private" data-url="tj/commander.js#1149" data-hovercard-type="pull_request" data-hovercard-url="/tj/commander.js/pull/1149/hovercard" href="https://urls.greenkeeper.io/tj/commander.js/pull/1149">#1149</a>])</li> </ul> <h3>Migration Tips</h3> <p>If you use <code>.on('command:*')</code> or more complicated tests to detect an unrecognised subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>program.args</code> or more complicated tests to detect a missing subcommand, you may be able to delete the code and rely on the default behaviour.</p> <p>If you use <code>.command('*')</code> to add a default command, you may be be able to switch to <code>isDefault:true</code> with a named command.</p> </details> <details> <summary>Commits</summary> <p>The new version differs by 53 commits.</p> <ul> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2aad525640d5885d9f51ae8dfe07a01c280cf4e3"><code>2aad525</code></a> <code>Update dependencies (#1214)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f86d8781655720eb1429d1b9c883e8c357f7c8c3"><code>f86d878</code></a> <code>Add cli keyword (#1213)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/83af0fd0488dc6f4568435050e7d3d7e0ab11b5b"><code>83af0fd</code></a> <code>Prepare for 5.0.0 (#1211)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/f14df0709173abf9ab4732064d77bce34f60fb05"><code>f14df07</code></a> <code>Add eslint settings for TypeScript (#1205)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/95e0d193ec02859f1bdcb08785e21f86942fc5e5"><code>95e0d19</code></a> <code>5.0.0-4</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/bd5a49e9d5ca4f4cf1c8bf60e3567ab5d5e67039"><code>bd5a49e</code></a> <code>Add factory to CHANGELOG</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/8c3dd6ffe90b566c5cabb277f8d9c57a8bfb348b"><code>8c3dd6f</code></a> <code>createCommand factory routine (#1191)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3c9f33fd8440aab061cbb0484712ed77c54df03a"><code>3c9f33f</code></a> <code>Say we support LTS, so do not need to update when node changes (#1204)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/3cf8cff2a91d1d38da2ea9e5ace40230f1d9a813"><code>3cf8cff</code></a> <code>Expand typescript checks (#1198)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/a3f453f11cf3ad69d2b15ce82efdfd3af53efe22"><code>a3f453f</code></a> <code>5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/87bfca690eda98a0573b20569f87675466c23dd8"><code>87bfca6</code></a> <code>Add CHANGELOG entries for 5.0.0-3</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/1757564a0f6034f803e1e638c6cf34ef64b77775"><code>1757564</code></a> <code>Use a tidier global command (#1200)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/0a50bd6c7696b6c5217258d38613f58684d1585b"><code>0a50bd6</code></a> <code>Add program to exports (#1195)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/77e511fc17cf5857520b0740737d0fc27acf736c"><code>77e511f</code></a> <code>Enable TypeScript checking of javascript, and resolve or suppress errors (#1194)</code></li> <li><a href="https://urls.greenkeeper.io/tj/commander.js/commit/2491c763e1ba058a5a877d7aa4b30427de83e844"><code>2491c76</code></a> <code>URLEncode several chinese toc link</code></li> </ul> <p>There are 53 commits in total.</p> <p>See the <a href="https://urls.greenkeeper.io/tj/commander.js/compare/d5186ba4b9b64a72cd685fccbb9ec5d0ec0c430d...2aad525640d5885d9f51ae8dfe07a01c280cf4e3">full diff</a></p> </details> --- <details> <summary>FAQ and help</summary> There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new). </details> --- Your [Greenkeeper](https://greenkeeper.io) bot 🌴 Co-authored-by: greenkeeper[bot] <23040076+greenkeeper[bot]@users.noreply.github.com>
Pull Request
Problem
I'm trying to build a command like the one below
The implementation loosely looks something like this...
When trying to run
cli -d
the action for the main command won't run. Usingprogram subcommand -b
runs fine.Solution
I traced it down to #844 which contains a fix for this issue: #843. In said issue, @Skywalker13 reported that it was expected that a program that only had one command registered that was the
*
command shouldn't trigger an action. The fix in #844 just changed it so that if there were any commands registered then the default command won't run.I preserved the behavior from #843 while also ensuring that valid usecases (i.e. when commands are present besides
*
) will still cause the base action to trigger.ChangeLog
Run actions when no optional arguments are provided and real commands are registered.