Commit 0302ecf83fd2ddaad8f41d396d99cd32860a0133
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: |