Skip to content

Version 1.6: Formatting help

Compare
Choose a tag to compare
@henryiii henryiii released this 28 Jun 12:45

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.
  • 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