tj/commander.js
### [`v9.3.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#930-2022-05-28)
[Compare Source](https://togithub.com/tj/commander.js/compare/v9.2.0...v9.3.0)
##### Added
- `.summary()` for a short summary to use instead of description when listing subcommands in help (\[[#1726](https://togithub.com/tj/commander.js/issues/1726)])
- `Option.implies()` to set other option values when the option is specified (\[[#1724](https://togithub.com/tj/commander.js/issues/1724)])
- updated Chinese README with 9.x changes (\[[#1727](https://togithub.com/tj/commander.js/issues/1727)])
##### Fixed
- TypeScript: add `string[]` to `.options()` default value parameter type for use with variadic options (\[[#1721](https://togithub.com/tj/commander.js/issues/1721)])
##### Deprecated
- multi-character short option flag (e.g. `-ws`) (\[[#1718](https://togithub.com/tj/commander.js/issues/1718)])
### [`v9.2.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#920-2022-04-15)
[Compare Source](https://togithub.com/tj/commander.js/compare/v9.1.0...v9.2.0)
##### Added
- conditional export of 'types' for upcoming TypeScript module resolution (\[[#1703](https://togithub.com/tj/commander.js/issues/1703)])
- example file showing two ways to add global options to subcommands (\[[#1708](https://togithub.com/tj/commander.js/issues/1708)])
##### Fixed
- detect option conflicts in parent commands of called subcommand (\[[#1710](https://togithub.com/tj/commander.js/issues/1710)])
##### Changed
- replace deprecated `String.prototype.substr` (\[[#1706](https://togithub.com/tj/commander.js/issues/1706)])
### [`v9.1.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#910-2022-03-19)
[Compare Source](https://togithub.com/tj/commander.js/compare/v9.0.0...v9.1.0)
##### Added
- Option `.conflicts()` to set conflicting options which can not be specified together (\[[#1678](https://togithub.com/tj/commander.js/issues/1678)])
- (developer) CodeQL configuration for GitHub Actions (\[[#1698](https://togithub.com/tj/commander.js/issues/1698)])
### [`v9.0.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#900-2022-01-28)
[Compare Source](https://togithub.com/tj/commander.js/compare/v8.3.0...v9.0.0)
##### Added
- simpler ECMAScript import (\[[#1589](https://togithub.com/tj/commander.js/issues/1589)])
- Option.preset() allows specifying value/arg for option when used without option-argument (especially optional, but also boolean option) (\[[#1652](https://togithub.com/tj/commander.js/issues/1652)])
- `.executableDir()` for custom search for subcommands (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)])
- throw with helpful message if pass `Option` to `.option()` or `.requiredOption()` (\[[#1655](https://togithub.com/tj/commander.js/issues/1655)])
- .`error()` for generating errors from client code just like Commander generated errors, with support for `.configureOutput()`, `.exitOverride()`, and `.showHelpAfterError()` (\[[#1675](https://togithub.com/tj/commander.js/issues/1675)])
- `.optsWithGlobals()` to return merged local and global options (\[[#1671](https://togithub.com/tj/commander.js/issues/1671)])
##### Changed
- *Breaking:* Commander 9 requires Node.js v12.20.0 or higher
- update package-lock.json to lockfile@2 format (\[[#1659](https://togithub.com/tj/commander.js/issues/1659)])
- `showSuggestionAfterError` is now on by default (\[[#1657](https://togithub.com/tj/commander.js/issues/1657)])
- *Breaking:* default value specified for boolean option now always used as default value (see .preset() to match some previous behaviours) (\[[#1652](https://togithub.com/tj/commander.js/issues/1652)])
- default value for boolean option only shown in help if true/false (\[[#1652](https://togithub.com/tj/commander.js/issues/1652)])
- use command name as prefix for subcommand stand-alone executable name (with fallback to script name for backwards compatibility) (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)])
- allow absolute path with `executableFile` (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)])
- removed restriction that nested subcommands must specify `executableFile` (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)])
- TypeScript: allow passing readonly string array to `.choices()` \[([#1667](https://togithub.com/tj/commander.js/issues/1667))]
- TypeScript: allow passing readonly string array to `.parse()`, `.parseAsync()`, `.aliases()` \[([#1669](https://togithub.com/tj/commander.js/issues/1669))]
##### Fixed
- option with optional argument not supplied on command line now works when option already has a value, whether from default value or from previous arguments (\[[#1652](https://togithub.com/tj/commander.js/issues/1652)])
##### Removed
- *Breaking:* removed internal fallback to `require.main.filename` when script not known from arguments passed to `.parse()` (can supply details using `.name()`, and `.executableDir()` or `executableFile`) (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)])
### [`v8.3.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#830-2021-10-22)
[Compare Source](https://togithub.com/tj/commander.js/compare/v8.2.0...v8.3.0)
##### Added
- `.getOptionValueSource()` and `.setOptionValueWithSource()`, where expected values for source are one of 'default', 'env', 'config', 'cli' (\[[#1613](https://togithub.com/tj/commander.js/issues/1613)])
##### Deprecated
- `.command('*')`, use default command instead (\[[#1612](https://togithub.com/tj/commander.js/issues/1612)])
- `on('command:*')`, use `.showSuggestionAfterError()` instead (\[[#1612](https://togithub.com/tj/commander.js/issues/1612)])
### [`v8.2.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#820-2021-09-10)
[Compare Source](https://togithub.com/tj/commander.js/compare/v8.1.0...v8.2.0)
##### Added
- `.showSuggestionAfterError()` to show suggestions after unknown command or unknown option (\[[#1590](https://togithub.com/tj/commander.js/issues/1590)])
- add `Option` support for values from environment variables using `.env()` (\[[#1587](https://togithub.com/tj/commander.js/issues/1587)])
##### Changed
- show error for unknown global option before subcommand (rather than just help) (\[[#1590](https://togithub.com/tj/commander.js/issues/1590)])
##### Removed
- TypeScript declaration of unimplemented `Option` method `argumentRejected`
### [`v8.1.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#810-2021-07-27)
[Compare Source](https://togithub.com/tj/commander.js/compare/v8.0.0...v8.1.0)
##### Added
- `.copyInheritedSettings()` (\[[#1557](https://togithub.com/tj/commander.js/issues/1557)])
- update Chinese translations of documentation for Commander v8 (\[[#1570](https://togithub.com/tj/commander.js/issues/1570)])
- `Argument` methods for `.argRequired()` and `.argOptional()` (\[[#1567](https://togithub.com/tj/commander.js/issues/1567)])
### [`v8.0.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#800-2021-06-25)
[Compare Source](https://togithub.com/tj/commander.js/compare/v7.2.0...v8.0.0)
##### Added
- `.argument(name, description)` for adding command-arguments (\[[#1490](https://togithub.com/tj/commander.js/issues/1490)])
- supports default value for optional command-arguments (\[[#1508](https://togithub.com/tj/commander.js/issues/1508)])
- supports custom processing function (\[[#1508](https://togithub.com/tj/commander.js/issues/1508)])
- `.createArgument()` factory method (\[[#1497](https://togithub.com/tj/commander.js/issues/1497)])
- `.addArgument()` (\[[#1490](https://togithub.com/tj/commander.js/issues/1490)])
- `Argument` supports `.choices()` (\[[#1525](https://togithub.com/tj/commander.js/issues/1525)])
- `.showHelpAfterError()` to display full help or a custom message after an error (\[[#1534](https://togithub.com/tj/commander.js/issues/1534)])
- `.hook()` with support for `'preAction'` and `'postAction'` callbacks (\[[#1514](https://togithub.com/tj/commander.js/issues/1514)])
- client typing of `.opts()` return type using TypeScript generics (\[[#1539](https://togithub.com/tj/commander.js/issues/1539)])
- the number of command-arguments is checked for programs without an action handler (\[[#1502](https://togithub.com/tj/commander.js/issues/1502)])
- `.getOptionValue()` and `.setOptionValue()` (\[[#1521](https://togithub.com/tj/commander.js/issues/1521)])
##### Changed
- refactor and simplify TypeScript declarations (with no default export) (\[[#1520](https://togithub.com/tj/commander.js/issues/1520)])
- `.parseAsync()` is now declared as `async` (\[[#1513](https://togithub.com/tj/commander.js/issues/1513)])
- *Breaking:* `Help` method `.visibleArguments()` returns array of `Argument` (\[[#1490](https://togithub.com/tj/commander.js/issues/1490)])
- *Breaking:* Commander 8 requires Node.js 12 or higher (\[[#1500](https://togithub.com/tj/commander.js/issues/1500)])
- *Breaking:* `CommanderError` code `commander.invalidOptionArgument` renamed `commander.invalidArgument` (\[[#1508](https://togithub.com/tj/commander.js/issues/1508)])
- *Breaking:* TypeScript declaration for `.addTextHelp()` callback no longer allows result of `undefined`, now just `string` (\[[#1516](https://togithub.com/tj/commander.js/issues/1516)])
- refactor `index.tab` into a file per class (\[[#1522](https://togithub.com/tj/commander.js/issues/1522)])
- remove help suggestion from "unknown command" error message (see `.showHelpAfteError()`) (\[[#1534](https://togithub.com/tj/commander.js/issues/1534)])
- `Command` property `.arg` initialised to empty array (was previously undefined) (\[[#1529](https://togithub.com/tj/commander.js/issues/1529)])
- update dependencies
##### Deprecated
- second parameter of `cmd.description(desc, argDescriptions)` for adding argument descriptions (\[[#1490](https://togithub.com/tj/commander.js/issues/1490)])
- (use new `.argument(name, description)` instead)
- `InvalidOptionArgumentError` (replaced by `InvalidArgumentError`) (\[[#1508](https://togithub.com/tj/commander.js/issues/1508)])
##### Removed
- *Breaking:* TypeScript declaration for default export of global `Command` object (\[[#1520](https://togithub.com/tj/commander.js/issues/1520)])
- (still available as named `program` export)
##### Migration Tips
If you have a simple program without an action handler, you will now get an error if
there are missing command-arguments.
```js
program
.option('-d, --debug')
.arguments('');
program.parse();
```
```sh
$ node trivial.js
error: missing required argument 'file'
```
If you want to show the help in this situation, you could check the arguments before parsing:
```js
if (process.argv.length === 2)
program.help();
program.parse();
```
Or, you might choose to show the help after any user error:
```js
program.showHelpAfterError();
```
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
^7.2.0
->^9.0.0
Release Notes
tj/commander.js
### [`v9.3.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#930-2022-05-28) [Compare Source](https://togithub.com/tj/commander.js/compare/v9.2.0...v9.3.0) ##### Added - `.summary()` for a short summary to use instead of description when listing subcommands in help (\[[#1726](https://togithub.com/tj/commander.js/issues/1726)]) - `Option.implies()` to set other option values when the option is specified (\[[#1724](https://togithub.com/tj/commander.js/issues/1724)]) - updated Chinese README with 9.x changes (\[[#1727](https://togithub.com/tj/commander.js/issues/1727)]) ##### Fixed - TypeScript: add `string[]` to `.options()` default value parameter type for use with variadic options (\[[#1721](https://togithub.com/tj/commander.js/issues/1721)]) ##### Deprecated - multi-character short option flag (e.g. `-ws`) (\[[#1718](https://togithub.com/tj/commander.js/issues/1718)]) ### [`v9.2.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#920-2022-04-15) [Compare Source](https://togithub.com/tj/commander.js/compare/v9.1.0...v9.2.0) ##### Added - conditional export of 'types' for upcoming TypeScript module resolution (\[[#1703](https://togithub.com/tj/commander.js/issues/1703)]) - example file showing two ways to add global options to subcommands (\[[#1708](https://togithub.com/tj/commander.js/issues/1708)]) ##### Fixed - detect option conflicts in parent commands of called subcommand (\[[#1710](https://togithub.com/tj/commander.js/issues/1710)]) ##### Changed - replace deprecated `String.prototype.substr` (\[[#1706](https://togithub.com/tj/commander.js/issues/1706)]) ### [`v9.1.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#910-2022-03-19) [Compare Source](https://togithub.com/tj/commander.js/compare/v9.0.0...v9.1.0) ##### Added - Option `.conflicts()` to set conflicting options which can not be specified together (\[[#1678](https://togithub.com/tj/commander.js/issues/1678)]) - (developer) CodeQL configuration for GitHub Actions (\[[#1698](https://togithub.com/tj/commander.js/issues/1698)]) ### [`v9.0.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#900-2022-01-28) [Compare Source](https://togithub.com/tj/commander.js/compare/v8.3.0...v9.0.0) ##### Added - simpler ECMAScript import (\[[#1589](https://togithub.com/tj/commander.js/issues/1589)]) - Option.preset() allows specifying value/arg for option when used without option-argument (especially optional, but also boolean option) (\[[#1652](https://togithub.com/tj/commander.js/issues/1652)]) - `.executableDir()` for custom search for subcommands (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)]) - throw with helpful message if pass `Option` to `.option()` or `.requiredOption()` (\[[#1655](https://togithub.com/tj/commander.js/issues/1655)]) - .`error()` for generating errors from client code just like Commander generated errors, with support for `.configureOutput()`, `.exitOverride()`, and `.showHelpAfterError()` (\[[#1675](https://togithub.com/tj/commander.js/issues/1675)]) - `.optsWithGlobals()` to return merged local and global options (\[[#1671](https://togithub.com/tj/commander.js/issues/1671)]) ##### Changed - *Breaking:* Commander 9 requires Node.js v12.20.0 or higher - update package-lock.json to lockfile@2 format (\[[#1659](https://togithub.com/tj/commander.js/issues/1659)]) - `showSuggestionAfterError` is now on by default (\[[#1657](https://togithub.com/tj/commander.js/issues/1657)]) - *Breaking:* default value specified for boolean option now always used as default value (see .preset() to match some previous behaviours) (\[[#1652](https://togithub.com/tj/commander.js/issues/1652)]) - default value for boolean option only shown in help if true/false (\[[#1652](https://togithub.com/tj/commander.js/issues/1652)]) - use command name as prefix for subcommand stand-alone executable name (with fallback to script name for backwards compatibility) (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)]) - allow absolute path with `executableFile` (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)]) - removed restriction that nested subcommands must specify `executableFile` (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)]) - TypeScript: allow passing readonly string array to `.choices()` \[([#1667](https://togithub.com/tj/commander.js/issues/1667))] - TypeScript: allow passing readonly string array to `.parse()`, `.parseAsync()`, `.aliases()` \[([#1669](https://togithub.com/tj/commander.js/issues/1669))] ##### Fixed - option with optional argument not supplied on command line now works when option already has a value, whether from default value or from previous arguments (\[[#1652](https://togithub.com/tj/commander.js/issues/1652)]) ##### Removed - *Breaking:* removed internal fallback to `require.main.filename` when script not known from arguments passed to `.parse()` (can supply details using `.name()`, and `.executableDir()` or `executableFile`) (\[[#1571](https://togithub.com/tj/commander.js/issues/1571)]) ### [`v8.3.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#830-2021-10-22) [Compare Source](https://togithub.com/tj/commander.js/compare/v8.2.0...v8.3.0) ##### Added - `.getOptionValueSource()` and `.setOptionValueWithSource()`, where expected values for source are one of 'default', 'env', 'config', 'cli' (\[[#1613](https://togithub.com/tj/commander.js/issues/1613)]) ##### Deprecated - `.command('*')`, use default command instead (\[[#1612](https://togithub.com/tj/commander.js/issues/1612)]) - `on('command:*')`, use `.showSuggestionAfterError()` instead (\[[#1612](https://togithub.com/tj/commander.js/issues/1612)]) ### [`v8.2.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#820-2021-09-10) [Compare Source](https://togithub.com/tj/commander.js/compare/v8.1.0...v8.2.0) ##### Added - `.showSuggestionAfterError()` to show suggestions after unknown command or unknown option (\[[#1590](https://togithub.com/tj/commander.js/issues/1590)]) - add `Option` support for values from environment variables using `.env()` (\[[#1587](https://togithub.com/tj/commander.js/issues/1587)]) ##### Changed - show error for unknown global option before subcommand (rather than just help) (\[[#1590](https://togithub.com/tj/commander.js/issues/1590)]) ##### Removed - TypeScript declaration of unimplemented `Option` method `argumentRejected` ### [`v8.1.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#810-2021-07-27) [Compare Source](https://togithub.com/tj/commander.js/compare/v8.0.0...v8.1.0) ##### Added - `.copyInheritedSettings()` (\[[#1557](https://togithub.com/tj/commander.js/issues/1557)]) - update Chinese translations of documentation for Commander v8 (\[[#1570](https://togithub.com/tj/commander.js/issues/1570)]) - `Argument` methods for `.argRequired()` and `.argOptional()` (\[[#1567](https://togithub.com/tj/commander.js/issues/1567)]) ### [`v8.0.0`](https://togithub.com/tj/commander.js/blob/HEAD/CHANGELOG.md#800-2021-06-25) [Compare Source](https://togithub.com/tj/commander.js/compare/v7.2.0...v8.0.0) ##### Added - `.argument(name, description)` for adding command-arguments (\[[#1490](https://togithub.com/tj/commander.js/issues/1490)]) - supports default value for optional command-arguments (\[[#1508](https://togithub.com/tj/commander.js/issues/1508)]) - supports custom processing function (\[[#1508](https://togithub.com/tj/commander.js/issues/1508)]) - `.createArgument()` factory method (\[[#1497](https://togithub.com/tj/commander.js/issues/1497)]) - `.addArgument()` (\[[#1490](https://togithub.com/tj/commander.js/issues/1490)]) - `Argument` supports `.choices()` (\[[#1525](https://togithub.com/tj/commander.js/issues/1525)]) - `.showHelpAfterError()` to display full help or a custom message after an error (\[[#1534](https://togithub.com/tj/commander.js/issues/1534)]) - `.hook()` with support for `'preAction'` and `'postAction'` callbacks (\[[#1514](https://togithub.com/tj/commander.js/issues/1514)]) - client typing of `.opts()` return type using TypeScript generics (\[[#1539](https://togithub.com/tj/commander.js/issues/1539)]) - the number of command-arguments is checked for programs without an action handler (\[[#1502](https://togithub.com/tj/commander.js/issues/1502)]) - `.getOptionValue()` and `.setOptionValue()` (\[[#1521](https://togithub.com/tj/commander.js/issues/1521)]) ##### Changed - refactor and simplify TypeScript declarations (with no default export) (\[[#1520](https://togithub.com/tj/commander.js/issues/1520)]) - `.parseAsync()` is now declared as `async` (\[[#1513](https://togithub.com/tj/commander.js/issues/1513)]) - *Breaking:* `Help` method `.visibleArguments()` returns array of `Argument` (\[[#1490](https://togithub.com/tj/commander.js/issues/1490)]) - *Breaking:* Commander 8 requires Node.js 12 or higher (\[[#1500](https://togithub.com/tj/commander.js/issues/1500)]) - *Breaking:* `CommanderError` code `commander.invalidOptionArgument` renamed `commander.invalidArgument` (\[[#1508](https://togithub.com/tj/commander.js/issues/1508)]) - *Breaking:* TypeScript declaration for `.addTextHelp()` callback no longer allows result of `undefined`, now just `string` (\[[#1516](https://togithub.com/tj/commander.js/issues/1516)]) - refactor `index.tab` into a file per class (\[[#1522](https://togithub.com/tj/commander.js/issues/1522)]) - remove help suggestion from "unknown command" error message (see `.showHelpAfteError()`) (\[[#1534](https://togithub.com/tj/commander.js/issues/1534)]) - `Command` property `.arg` initialised to empty array (was previously undefined) (\[[#1529](https://togithub.com/tj/commander.js/issues/1529)]) - update dependencies ##### Deprecated - second parameter of `cmd.description(desc, argDescriptions)` for adding argument descriptions (\[[#1490](https://togithub.com/tj/commander.js/issues/1490)]) - (use new `.argument(name, description)` instead) - `InvalidOptionArgumentError` (replaced by `InvalidArgumentError`) (\[[#1508](https://togithub.com/tj/commander.js/issues/1508)]) ##### Removed - *Breaking:* TypeScript declaration for default export of global `Command` object (\[[#1520](https://togithub.com/tj/commander.js/issues/1520)]) - (still available as named `program` export) ##### Migration Tips If you have a simple program without an action handler, you will now get an error if there are missing command-arguments. ```js program .option('-d, --debug') .arguments('Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.