Skip to content

v5.0.0

Compare
Choose a tag to compare
@75lb 75lb released this 17 Jan 17:02
· 59 commits to master since this release

Breaking changes from v4.0.7

  • Unknown values now throw an exception (UNKNOWN_VALUE) by default in the same way unknown options do. Command-line-args is now strict by default - all options and values must be accounted for in the option definitions.
    • An example of an unknown value is the arg 5 in the command --verbose 5 where verbose is defined as a Boolean.
    • "Strict by default" behaviour can be disabled using either partial or stopAtFIrstUnknown parse options.
  • Setting a singular, non-multiple option more than once (e.g. --help --help) now throws an ALREADY_SET exception.
  • The multiple error names (NAME_MISSING, INVALID_TYPE etc) thrown by commandLineArgs in the case of an invalid definition have been consolidated to just one error name: INVALID_DEFINITIONS. Given broken option definitions are a programmer error they'd never be handled anyway, making the various names pointless.

New documentation

Wiki introduced.

New parse features

  • stopAtFirstUnknown
  • camelCase
  • the UNKNOWN_OPTION exception now has a optionName property containing the arg that specified an unknown option, e.g. --one
  • the ALREADY_SET exception has a optionName property containing the option name that has already been set, e.g. one
  • the UNKNOWN_VALUE exception has a value property containing the unknown value, e.g. 5

New option definition features

Bug fixes

  • #67 unknown "--option=value notation" value consumed as defaultOption
  • #68 unknown --option=value arg split when defaultOption set

Upgrade notes

No API changes were introduced in v5.0.0 - it is backward-compatible. If you're comfortable with the new version throwing exceptions on unknown values, you are safe to upgrade without code change.