Skip to content

Releases: apple/swift-argument-parser

ArgumentParser 1.2.0

08 Nov 19:47
fddd1c0
Compare
Choose a tag to compare

Additions

  • You can now provide a title in an @OptionGroup declaration. Titled option groups are listed separately in the help screen under that title as a heading. (#492)

  • Two new parsing strategies have been added for @Argument array properties:

    • .allUnrecognized captures all unrecognized inputs after parsing known flags, options, and arguments.
    • .postTerminator collects any inputs that follow the -- terminator.

    See the ArgumentArrayParsingStrategy documentation for more. (#496)

  • Default values are now supported for @Argument or @Option properties with optional type, allowing you to initialize those properties with nil. Providing a non-nil default value results in a warning, since optional properties with non-nil defaults don't need to be declared as optionals. (#477, #480)

Changes

  • The .unconditionalRemaining array parsing strategy has been deprecated and renamed to .captureForPassthrough, to better fit its semantic behavior and intended usage. See the ArgumentArrayParsingStrategy documentation for more. (#496)

Fixes

  • Invalid init(from:) decoding initializers are now correctly diagnosed by ArgumentParser's validators. (#487)
  • Default values are now correctly displayed as flags for @Flag properties with inversions or EnumerableFlag types. (#486)
  • The help display for non-string-backed raw representable types has been corrected to not show raw Swift values. Instead, the help display uses the type's customized defaultValueDescription and allValues implementations. (#494)
  • Properties at different levels of a command hierarchy with the same Swift name but different argument names no longer collide. (#495)
  • The generate-manual plugin name is improved when used from within Xcode. (#505)
  • Documentation fixes and improvements.

The 1.2.0 release includes contributions from @allevato, @clayellis, @compnerd, @d-ronnqvist, @natecook1000, @randomeizer, and @rauhul. Thank you!

ArgumentParser 1.1.4

27 Aug 03:34
9f39744
Compare
Choose a tag to compare

Changes

  • The generate-manual plugin now defaults to creating single page manuals. The --single-page flag has been replaced with --multi-page to restore the previous default functionality. (#472)

    Migration: Update scripts that invoked generate-manual without --single-page to include --multi-page and update scripts that invoked generate-manual with --single-page to omit the flag.

  • The "experimental" prefix from the generate-manual plugin has been removed. (#475)

    Migration: Update scripts to invoke the generate-manual plugin via swift package generate-manual instead of swift package plugin experimental-generate-manual.

Fixes

  • The generate-manual plugin is correctly declared as a product, making the plugin visible to clients. (#456)
  • The generate-manual plugin's --authors arguments are now correctly passed to the underlying generation tool. (#471)
  • Manuals generated by the generate-manual plugin now include the option's value names and do not include value names for flags. (#473)
  • Built-in flags such as --help and --version are now correctly marked as optional fixing some generated content which indicated the flags are always required. (#474)
  • Value descriptions are now correctly derived for types which are ExpressibleByArgument and RawRepresentable by String. Help menus will now display valid default values for such types. (#476)

The 1.1.4 release includes contributions from @ian-twilightcoder, @MarcoEidinger, and @rauhul. Thank you!

ArgumentParser 1.1.3

23 Jun 18:30
df9ee66
Compare
Choose a tag to compare

Additions

  • ArgumentParser now includes a SwiftPM plugin for generating man pages. Explore the functionality and configuration by running swift package plugin experimental-generate-manual --help from your package root. (#332)

Fixes

  • Hidden subcommands are now excluded from completion scripts. (#443)
  • When an invalid value is provided for a CaseIterable type, the error message now includes a list of valid inputs. (#445)
  • There's now a diagnostic when an AsyncParsableCommand is incorrectly placed under a non-async root command. (#436)

The 1.1.3 release includes contributions from @keith, @KeithBird, @konomae, @LucianoPAlmeida, and @rauhul. Thank you!

ArgumentParser 1.1.2

11 Apr 18:50
f3c9084
Compare
Choose a tag to compare

Changes

  • CMake builds now always statically link ArgumentParserToolInfo. (#424)

Fixes

  • When a user provides an array-based option's key (e.g. --key) without any values, the error message now correctly describes the problem. (#435)

The 1.1.2 release includes contributions from @compnerd and @KeithBird. Thank you!

ArgumentParser 1.1.1

16 Mar 14:25
8290528
Compare
Choose a tag to compare

Fixes

  • Moves the platform requirement from the package level down to the new types and protocols with async members. This was a source-breaking change in 1.1.0. (#427)
  • Fixed issues in the CMake build configuration.

ArgumentParser 1.1.0

15 Mar 06:37
554e765
Compare
Choose a tag to compare

Additions

  • A command's run() method now supports async/await when the command conforms to AsyncParsableCommand. (#404)
  • New API for distinguishing between public, hidden, and private arguments and option groups, and a new extended help screen accessible via --help-hidden. (#366, #390, and #405 through #413)
  • You can now override the autogenerated usage string when configuring a command. (#400)

Changes

  • ArgumentParser now requires Swift 5.5.

Fixes

  • The auto-generated usage string now correctly hides all optional parameters when over the length limit. (#416)
  • One @Option initializer now has its parameters in the correct order; the incorrect initializer is deprecated. (#391)
  • Help flags are now correctly captured in .unconditionalRemaining argument arrays.
  • Documentation fixes and improvements.

The 1.1.0 release includes contributions from @keith, @MartinP7r, @McNight, @natecook1000, @rauhul, and @zkiraly. Thank you!

ArgumentParser 1.0.3

01 Feb 06:27
Compare
Choose a tag to compare

Changes

  • When a user provides an incorrect value for an option, an ArgumentParser-based program now includes the valid values when possible.

    $ example --format png
    Error: The value 'png' is invalid for '--format <format>'.
    Please provide one of 'text', 'json' or 'csv'.
    

Fixes

  • Resolves an issue with zsh custom completions for command names that include a dash.
  • Improves the generated completions scripts for fish.
  • Resolves issues that prevented building ArgumentParser for WebAssembly using SwiftWasm toolchains.
  • Improved window size handling on Windows.
  • Fixed a crash when using --experimental-dump-help with commands that provide non-parsed values.
  • Fixes an issue where subcommands that declare array arguments with the .unconditionalRemaining parsing strategy unexpectedly miss arguments, extending the change in #333 to subcommands. (#397)
  • Corrects the order of an @Option initializer's parameters, deprecating the old version. (#391)
  • Expanded and corrected documentation.

The 1.0.3 release includes contributions from @atierian, @CraigSiemens, @dduan, @floam, @KS1019, @McNight, @mdznr, @natecook1000, @rauhul, and @yonihemi. Thank you!

ArgumentParser 1.0.2

10 Nov 17:05
e146504
Compare
Choose a tag to compare

Fixes

  • Addresses an issue when building tests under Mac Catalyst.

ArgumentParser 1.0.1

14 Sep 14:47
d2930e8
Compare
Choose a tag to compare

Fixes

  • Addresses an issue when compiling under Mac Catalyst.

ArgumentParser 1.0

11 Sep 00:06
fd4c3b6
Compare
Choose a tag to compare

The 1.0 release marks an important milestone — ArgumentParser is now source stable!

Changes

  • ArgumentParser now provides a DocC documentation catalog, so you can view rendered articles and symbol documentation directly within Xcode.

Fixes

  • Parsing works as expected for options with single-dash names that are declared using the .upToNextOption parsing strategy.