Commit 0302ecf83fd2ddaad8f41d396d99cd32860a0133

Authored by Henry Fredrick Schreiner
1 parent 437dbab1

Adding details for 1.3

Showing 2 changed files with 45 additions and 15 deletions
CHANGELOG.md
1 -## Version 1.3 1 +## Version 1.3: Refactor
  2 +
  3 +This version focused on refactoring several key systems to ensure correct behavior in the interaction of different settings. Most caveats about
  4 +features only working on the main App have been addressed, and extra arguments have been reworked. Inheritance
  5 +of defaults makes configuring CLI11 much easier without having to subclass. Policies add new ways to handle multiple arguments to match your
  6 +favorite CLI programs. Error messages and help messages are better and more flexible. Several bugs and odd behaviors in the parser have been fixed.
2 7
3 * Added a version macro, `CLI11_VERSION`, along with `*_MAJOR`, `*_MINOR`, and `*_PATCH`, for programmatic access to the version. 8 * Added a version macro, `CLI11_VERSION`, along with `*_MAJOR`, `*_MINOR`, and `*_PATCH`, for programmatic access to the version.
4 * Reworked the way defaults are set and inherited; explicit control given to user with `->option_defaults()` [#48](https://github.com/CLIUtils/CLI11/pull/48) 9 * Reworked the way defaults are set and inherited; explicit control given to user with `->option_defaults()` [#48](https://github.com/CLIUtils/CLI11/pull/48)
@@ -28,7 +33,18 @@ @@ -28,7 +33,18 @@
28 * Single internal arg parse function [#56](https://github.com/CLIUtils/CLI11/pull/56) 33 * Single internal arg parse function [#56](https://github.com/CLIUtils/CLI11/pull/56)
29 * Allow options to be disabled from INI file, rename `add_config` to `set_config` [#60](https://github.com/CLIUtils/CLI11/pull/60) 34 * Allow options to be disabled from INI file, rename `add_config` to `set_config` [#60](https://github.com/CLIUtils/CLI11/pull/60)
30 35
31 -## Version 1.2 36 +> ### Converting from CLI11 1.2:
  37 +>
  38 +> * `app.parse` no longer returns a vector. Instead, use `app.remaining(true)`.
  39 +> * `"hidden"` is no longer a special group name, instead use `""`
  40 +> * Validators API has changed to return an error string; use `.empty()` to get the old bool back
  41 +> * Use `.set_help_flag` instead of accessing the help pointer directly (discouraged, but not removed yet)
  42 +> * `add_config` has been renamed to `set_config`
  43 +> * Errors thrown in some cases are slightly more specific
  44 +
  45 +## Version 1.2: Stability
  46 +
  47 +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.
32 48
33 * Added functional form of flag [#33](https://github.com/CLIUtils/CLI11/pull/33), automatic on C++14 49 * Added functional form of flag [#33](https://github.com/CLIUtils/CLI11/pull/33), automatic on C++14
34 * Fixed Config file search if passed on command line [#30](https://github.com/CLIUtils/CLI11/issues/30) 50 * Fixed Config file search if passed on command line [#30](https://github.com/CLIUtils/CLI11/issues/30)
@@ -38,7 +54,9 @@ @@ -38,7 +54,9 @@
38 * Required positionals now take priority over subcommands [#23](https://github.com/CLIUtils/CLI11/issues/23) 54 * Required positionals now take priority over subcommands [#23](https://github.com/CLIUtils/CLI11/issues/23)
39 * Extra requirements enforced by Travis 55 * Extra requirements enforced by Travis
40 56
41 -## Version 1.1 57 +## Version 1.1: Feedback
  58 +
  59 +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.
42 60
43 * Added simple support for enumerations, allow non-printable objects [#12](https://github.com/CLIUtils/CLI11/issues/12) 61 * Added simple support for enumerations, allow non-printable objects [#12](https://github.com/CLIUtils/CLI11/issues/12)
44 * Added `app.parse_order()` with original parse order ([#13](https://github.com/CLIUtils/CLI11/issues/13), [#16](https://github.com/CLIUtils/CLI11/pull/16)) 62 * Added `app.parse_order()` with original parse order ([#13](https://github.com/CLIUtils/CLI11/issues/13), [#16](https://github.com/CLIUtils/CLI11/pull/16))
@@ -46,12 +64,17 @@ @@ -46,12 +64,17 @@
46 * Removed Windows warning ([#10](https://github.com/CLIUtils/CLI11/issues/10), [#20](https://github.com/CLIUtils/CLI11/pull/20)) 64 * Removed Windows warning ([#10](https://github.com/CLIUtils/CLI11/issues/10), [#20](https://github.com/CLIUtils/CLI11/pull/20))
47 * Some improvements to CMake, detect Python and no dependencies on Python 2 (like Python 3) ([#18](https://github.com/CLIUtils/CLI11/issues/18), [#21](https://github.com/CLIUtils/CLI11/pull/21)) 65 * Some improvements to CMake, detect Python and no dependencies on Python 2 (like Python 3) ([#18](https://github.com/CLIUtils/CLI11/issues/18), [#21](https://github.com/CLIUtils/CLI11/pull/21))
48 66
49 -## Version 1.0 67 +## Version 1.0: Official release
  68 +
  69 +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:
  70 +
50 * Cleanup using `clang-tidy` and `clang-format` 71 * Cleanup using `clang-tidy` and `clang-format`
51 * Small improvements to Timers, easier to subclass Error 72 * Small improvements to Timers, easier to subclass Error
52 * Move to 3-Clause BSD license 73 * Move to 3-Clause BSD license
53 74
54 -## Version 0.9 75 +## Version 0.9: Polish
  76 +
  77 +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.
55 78
56 * Better CMake named target (CLI11) 79 * Better CMake named target (CLI11)
57 * More warnings added, fixed 80 * More warnings added, fixed
@@ -61,12 +84,16 @@ @@ -61,12 +84,16 @@
61 * Support for complex numbers 84 * Support for complex numbers
62 * Subcommands now test true/false directly or with `->parsed()`, cleaner parse 85 * Subcommands now test true/false directly or with `->parsed()`, cleaner parse
63 86
64 -## Version 0.8 87 +## Version 0.8: CLIUtils
  88 +
  89 +This release moved the repository to the CLIUtils master organization.
65 90
66 * Moved to CLIUtils on GitHub 91 * Moved to CLIUtils on GitHub
67 * Fixed docs build and a few links 92 * Fixed docs build and a few links
68 93
69 -## Version 0.7 94 +## Version 0.7: Code coverage 100%
  95 +
  96 +Lots of small bugs fixed when adding code coverage, better in edge cases. Much more powerful ini support.
70 97
71 * Allow comments in ini files (lines starting with `;`) 98 * Allow comments in ini files (lines starting with `;`)
72 * Ini files support flags, vectors, subcommands 99 * Ini files support flags, vectors, subcommands
@@ -77,7 +104,9 @@ @@ -77,7 +104,9 @@
77 * Adding extra utilities in full version only, `Timer` (not needed for parsing, but useful for general CLI applications). 104 * Adding extra utilities in full version only, `Timer` (not needed for parsing, but useful for general CLI applications).
78 * Better support for custom `add_options` like functions. 105 * Better support for custom `add_options` like functions.
79 106
80 -## Version 0.6 107 +## Version 0.6: Cleanup
  108 +
  109 +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.
81 110
82 * Simplified parsing to use `vector<string>` only 111 * Simplified parsing to use `vector<string>` only
83 * Fixed fallthrough, made it optional as well (default: off): `.fallthrough()`. 112 * Fixed fallthrough, made it optional as well (default: off): `.fallthrough()`.
@@ -85,7 +114,7 @@ @@ -85,7 +114,7 @@
85 * Renamed protected members for internal consistency, grouped docs. 114 * Renamed protected members for internal consistency, grouped docs.
86 * Added the ability to add a number to `.require_subcommand()`. 115 * Added the ability to add a number to `.require_subcommand()`.
87 116
88 -## Version 0.5 117 +## Version 0.5: Windows support
89 118
90 * Allow `Hidden` options. 119 * Allow `Hidden` options.
91 * Throw `OptionAlreadyAdded` errors for matching subcommands or options, with ignore-case included, tests 120 * Throw `OptionAlreadyAdded` errors for matching subcommands or options, with ignore-case included, tests
@@ -97,7 +126,7 @@ @@ -97,7 +126,7 @@
97 * Support for quotes and spaces in ini files 126 * Support for quotes and spaces in ini files
98 * Fixes to allow support for Windows (added Appveyor) (Uses `-`, not `/` syntax) 127 * Fixes to allow support for Windows (added Appveyor) (Uses `-`, not `/` syntax)
99 128
100 -## Version 0.4 129 +## Version 0.4: Ini support
101 130
102 * Updates to help print 131 * Updates to help print
103 * Removed `run`, please use `parse` unless you subclass and add it 132 * Removed `run`, please use `parse` unless you subclass and add it
@@ -105,7 +134,7 @@ @@ -105,7 +134,7 @@
105 * Added Range for further Plumbum compatibility 134 * Added Range for further Plumbum compatibility
106 * Added function to print out ini file 135 * Added function to print out ini file
107 136
108 -## Version 0.3 137 +## Version 0.3: Plumbum compatibility
109 138
110 * Added `->requires`, `->excludes`, and `->envname` from [Plumbum](http://plumbum.readthedocs.io/en/latest/) 139 * Added `->requires`, `->excludes`, and `->envname` from [Plumbum](http://plumbum.readthedocs.io/en/latest/)
111 * Supports `->mandatory` from Plubmum 140 * Supports `->mandatory` from Plubmum
@@ -117,7 +146,7 @@ @@ -117,7 +146,7 @@
117 * Clang 3.5 now required for tests due to googlemock usage, 3.4 should still work otherwise 146 * Clang 3.5 now required for tests due to googlemock usage, 3.4 should still work otherwise
118 * Changes `setup` for an explicit help bool in constructor/`add_subcommand` 147 * Changes `setup` for an explicit help bool in constructor/`add_subcommand`
119 148
120 -## Version 0.2 149 +## Version 0.2: Leaner and meaner
121 150
122 * Moved to simpler syntax, where `Option` pointers are returned and operated on 151 * Moved to simpler syntax, where `Option` pointers are returned and operated on
123 * Removed `make_` style options 152 * Removed `make_` style options
@@ -127,8 +156,7 @@ @@ -127,8 +156,7 @@
127 * Added `Option_p` and `App_p`, mostly for internal use 156 * Added `Option_p` and `App_p`, mostly for internal use
128 * Startup sequence, including help flag, can be modified by subclasses 157 * Startup sequence, including help flag, can be modified by subclasses
129 158
130 -## Version 0.1  
131 -  
132 -Initial version 159 +## Version 0.1: First release
133 160
  161 +First release before major cleanup. Still has make syntax and combiners; very clever syntax but not the best or most commonly expected way to work.
134 162
README.md
@@ -15,6 +15,8 @@ CLI11 provides all the features you expect in a powerful command line parser, wi @@ -15,6 +15,8 @@ CLI11 provides all the features you expect in a powerful command line parser, wi
15 It is tested on [Travis] and [AppVeyor], and is being included in the [GooFit GPU fitting framework][GooFit]. It was inspired by [`plumbum.cli`][Plumbum] for Python. CLI11 has a user friendly introduction in this README, a more in-depth tutorial [GitBook], as well as [API documentation][api-docs] generated by Travis. 15 It is tested on [Travis] and [AppVeyor], and is being included in the [GooFit GPU fitting framework][GooFit]. It was inspired by [`plumbum.cli`][Plumbum] for Python. CLI11 has a user friendly introduction in this README, a more in-depth tutorial [GitBook], as well as [API documentation][api-docs] generated by Travis.
16 See the [changelog](./CHANGELOG.md) or [GitHub Releases] for details for current and past releases. The version 1.0 announcement post can be found [here](http://iscinumpy.blogspot.com/2017/06/announcing-cli11-version-10.html). 16 See the [changelog](./CHANGELOG.md) or [GitHub Releases] for details for current and past releases. The version 1.0 announcement post can be found [here](http://iscinumpy.blogspot.com/2017/06/announcing-cli11-version-10.html).
17 17
  18 +You can be notified when new releases are made by subscribing to https://github.com/CLIUtils/CLI11/releases.atom on an RSS reader, like Feedly.
  19 +
18 ### Why write another CLI parser? 20 ### Why write another CLI parser?
19 21
20 An acceptable CLI parser library should be all of the following: 22 An acceptable CLI parser library should be all of the following: