All Versions
Latest Version
Avg Release Cycle
45 days
Latest Release

Changelog History
Page 3

  • v1.3 Changes

    ๐Ÿ”จ This version focused on refactoring several key systems to ensure correct behavior in the interaction of different settings. Most caveats about ๐Ÿ”‹ features only working on the main App have been addressed, and extra arguments have been reworked. Inheritance ๐Ÿ”ง of defaults makes configuring CLI11 much easier without having to subclass. Policies add new ways to handle multiple arguments to match your ๐Ÿ“œ favorite CLI programs. Error messages and help messages are better and more flexible. Several bugs and odd behaviors in the parser have been fixed.

    • ๐Ÿ”– Added a version macro, CLI11_VERSION, along with *_MAJOR, *_MINOR, and *_PATCH, for programmatic access to the version.
    • 0๏ธโƒฃ Reworked the way defaults are set and inherited; explicit control given to user with ->option_defaults() #48
    • Hidden options now are based on an empty group name, instead of special "hidden" keyword #48
    • ๐Ÿ“œ parse no longer returns (so CLI11_PARSE is always usable) #37
    • โž• Added remaining() and remaining_size() #37
    • allow_extras and prefix_command are now valid on subcommands #37
    • โž• Added take_last to only take last value passed #40
    • Added multi_option_policy and shortcuts to provide more control than just a take last policy #59
    • More detailed error messages in a few cases #41
    • Footers can be added to help #42
    • Help flags are easier to customize #43
    • ๐Ÿ‘ Subcommand now support groups #46
    • CLI::RuntimeError added, for easy exit with error codes #45
    • The clang-format script is now no longer "hidden" #48
    • The order is now preserved for subcommands (list and callbacks) #49
    • โœ… Tests now run individually, utilizing CMake 3.10 additions if possible #50
    • 0๏ธโƒฃ Failure messages are now customizable, with a shorter default #52
    • Some improvements to error codes #53
    • require_subcommand now offers a two-argument form and negative values on the one-argument form are more useful #51
    • Subcommands no longer match after the max required number is obtained #51
    • Unlimited options no longer prioritize over remaining/unlimited positionals #51
    • โž• Added ->transform which modifies the string parsed #54
    • ๐Ÿ”„ Changed of API in validators to void(std::string &) (const for users), throwing providing nicer errors #54
    • โž• Added CLI::ArgumentMismatch #56 and fixed missing failure if one arg expected #55
    • ๐Ÿ‘Œ Support for minimum unlimited expected arguments #56
    • ๐Ÿ“œ Single internal arg parse function #56
    • Allow options to be disabled from INI file, rename add_config to set_config #60

    Converting from CLI11 1.2:

    ๐Ÿ“œ > * app.parse no longer returns a vector. Instead, use app.remaining(true).

    • "hidden" is no longer a special group name, instead use ""
    • Validators API has changed to return an error string; use .empty() to get the old bool back
    • Use .set_help_flag instead of accessing the help pointer directly (discouraged, but not removed yet)
    • add_config has been renamed to set_config
    • Errors thrown in some cases are slightly more specific
  • v1.2 Changes

    ๐Ÿš€ This release focuses on making CLI11 behave properly in corner cases, and with config files on the command line. This includes fixes for a variety of reported issues. A few features were added to make life easier, as well; such as a new flag callback and a macro for the parse command.

    • โž• Added functional form of flag #33, automatic on C++14
    • ๐Ÿ›  Fixed Config file search if passed on command line #30
    • โž• Added CLI11_PARSE(app, argc, argv) macro for simple parse commands (does not support returning arg)
    • The name string can now contain spaces around commas #29
    • 0๏ธโƒฃ set_default_str now only sets string, and set_default_val will evaluate the default string given #26
    • Required positionals now take priority over subcommands #23
    • Extra requirements enforced by Travis
  • v1.1 Changes

    ๐Ÿš€ This release incorporates feedback from the release announcement. The examples are slowly being expanded, some corner cases improved, and some new functionality for tricky parsing situations.

    • โž• Added simple support for enumerations, allow non-printable objects #12
    • โž• Added app.parse_order() with original parse order (#13, #16)
    • Added prefix_command(), which is like allow_extras but instantly stops and returns. (#8, #17)
    • โœ‚ Removed Windows warning (#10, #20)
    • Some improvements to CMake, detect Python and no dependencies on Python 2 (like Python 3) (#18, #21)
  • v1.0 Changes

    ๐Ÿš€ This is the first stable release for CLI11. Future releases will try to remain backward compatible and will follow semantic versioning if possible. There were a few small changes since version 0.9:

    • Cleanup using clang-tidy and clang-format
    • Small improvements to Timers, easier to subclass Error
    • ๐Ÿšš Move to 3-Clause BSD license
  • v0.9 Changes

    ๐Ÿš€ This release focused on cleaning up the most exotic compiler warnings, fixing a few oddities of the config parser, and added a more natural method to check subcommands.

    • ๐Ÿ‘ Better CMake named target (CLI11)
    • โš  More warnings added, fixed
    • 0๏ธโƒฃ Ini output now includes =false when default_also is true
    • Ini no longer lists the help pointer
    • โž• Added test for inclusion in multiple files and linking, fixed issues (rarely needed for CLI, but nice for tools)
    • ๐Ÿ‘Œ Support for complex numbers
    • โœ… Subcommands now test true/false directly or with ->parsed(), cleaner parse
  • v0.8 Changes

    ๐Ÿš€ This release moved the repository to the CLIUtils master organization.

    • ๐Ÿšš Moved to CLIUtils on GitHub
    • ๐Ÿ›  Fixed docs build and a few links
  • v0.7 Changes

    ๐Ÿ›  Lots of small bugs fixed when adding code coverage, better in edge cases. Much more powerful ini support.

    • ๐Ÿ‘ Allow comments in ini files (lines starting with ;)
    • ๐Ÿ‘ Ini files support flags, vectors, subcommands
    • โž• Added CodeCov code coverage reports
    • ๐Ÿ›  Lots of small bugfixes related to adding tests to increase coverage to 100%
    • Error handling now uses scoped enum in errors
    • ๐Ÿ“œ Reparsing rules changed a little to accommodate Ini files. Callbacks are now called when parsing INI, and reset any time results are added.
    • โž• Adding extra utilities in full version only, Timer (not needed for parsing, but useful for general CLI applications).
    • ๐Ÿ‘ Better support for custom add_options like functions.
  • v0.6 Changes

    ๐Ÿš€ Lots of cleanup and docs additions made it into this release. Parsing is simpler and more robust; fall through option added and works as expected; much more consistent variable names internally.

    • ๐Ÿ“œ Simplified parsing to use vector<string> only
    • ๐Ÿ›  Fixed fallthrough, made it optional as well (default: off): .fallthrough().
    • โž• Added string versions of ->requires() and ->excludes() for consistency.
    • ๐Ÿ“„ Renamed protected members for internal consistency, grouped docs.
    • โž• Added the ability to add a number to .require_subcommand().
  • v0.5 Changes

    • ๐Ÿ‘ Allow Hidden options.
    • โœ… Throw OptionAlreadyAdded errors for matching subcommands or options, with ignore-case included, tests
    • ->ignore_case() added to subcommands, options, and add_set_ignore_case. Subcommands inherit setting from parent App on creation.
    • Subcommands now can be "chained", that is, left over arguments can now include subcommands that then get parsed. Subcommands are now a list (get_subcommands). Added got_subcommand(App_or_name) to check for subcommands.
    • โž• Added .allow_extras() to disable error on failure. Parse returns a vector of leftover options. Renamed error to ExtrasError, and now triggers on extra options too.
    • Added require_subcommand to App, to simplify forcing subcommands. Do not do add_subcommand()->require_subcommand, since that is the subcommand, not the master App.
    • โž• Added printout of ini file text given parsed options, skips flags.
    • ๐Ÿ‘Œ Support for quotes and spaces in ini files
    • ๐Ÿ›  Fixes to allow support for Windows (added Appveyor) (Uses -, not / syntax)
  • v0.4 Changes

    • โšก๏ธ Updates to help print
    • โœ‚ Removed run, please use parse unless you subclass and add it
    • ๐Ÿ‘Œ Supports ini files mixed with command line, tested
    • โž• Added Range for further Plumbum compatibility
    • โž• Added function to print out ini file