CLI11 v1.6.0 Release Notes

Release Date: 2018-06-28 // almost 6 years ago
  • โž• Added a new formatting system #109. You can now set the formatter on Apps. This has also simplified the internals of Apps and Options a bit by separating most formatting code.

    • โž• Added CLI::Formatter and formatter slot for apps, inherited.
    • FormatterBase is the minimum required.
    • FormatterLambda provides for the easy addition of an arbitrary function.
    • โž• Added help_all support (not added by default).

    ๐Ÿ”„ Changes to the help system (most normal users will not notice this):

    • Renamed single_name to get_name(false, false) (the default).
    • The old get_name() is now get_name(false, true).
    • The old get_pname() is now get_name(true, false).
    • โœ‚ Removed help_* functions.
    • Protected function _has_help_positional removed.
    • format_help can now be chained.
    • โž• Added getters for the missing parts of options (help no longer uses any private parts).
    • ๐Ÿ“œ Help flags now use new short_circuit property to simplify parsing. #121

    ๐Ÿ†• New for Config file reading and writing #121:

    • Overridable, bidirectional Config.
    • 0๏ธโƒฃ ConfigINI provided and used by default.
    • ๐Ÿ“‡ Renamed ini to config in many places.
    • Has config_formatter() and get_config_formatter().
    • Dropped prefix argument from config_to_str.
    • โž• Added ConfigItem.
    • โž• Added an example of a custom config format using nlohmann/json. #138

    โฌ†๏ธ Validators are now much more powerful #118, all built in validators upgraded to the new form:

    • A subclass of CLI::Validator is now also accepted.
    • They now can set the type name to things like PATH and INT in [1-4].
    • Validators can be combined with & and |.
    • Old form simple validators are still accepted.

    Other changes:

    • ๐Ÿ›  Fixing parse(args)'s args setting and ordering after parse. #141
    • Replaced set_custom_option with type_name and type_size instead of set_custom_option. Methods return this. [#136]
    • Dropped set_ on Option's type_name, default_str, and default_val. [#136]
    • Removed set_ from App's failure_message, footer, callback, and name. [#136]
    • ๐Ÿ›  Fixed support N<-1 for type_size. #140
    • โž• Added ->each() to make adding custom callbacks easier. #126
    • ๐Ÿ‘ Allow empty options add_option("-n",{}) to be edited later with each #142
    • Added filter argument to get_subcommands, get_options; use empty filter {} to avoid filtering.
    • โž• Added get_groups() to get groups.
    • Better support for manual options with get_option, set_results, and empty. #119
    • lname and sname have getters, added const get_parent. #120
    • Using add_set will now capture L-values for sets, allowing further modification. #113
    • Dropped duplicate way to run get_type_name (get_typeval).
    • โœ‚ Removed requires in favor of needs (deprecated in last version). #112
    • Const added to argv. #126

    โœ… Backend and testing changes:

    • Internally, type_name is now a lambda function; for sets, this reads the set live. #116
    • โœ… Cleaner tests without app.reset() (and reset is now clear). #141
    • ๐Ÿ‘ Better CMake policy handling. #110
    • Includes are properly sorted. #120
    • โœ… Testing (only) now uses submodules. #111