Skip to content

Commit 0302ecf

Browse files
committed
Adding details for 1.3
1 parent 437dbab commit 0302ecf

File tree

2 files changed

+45
-15
lines changed

2 files changed

+45
-15
lines changed

CHANGELOG.md

+43-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
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.
27

38
* Added a version macro, `CLI11_VERSION`, along with `*_MAJOR`, `*_MINOR`, and `*_PATCH`, for programmatic access to the version.
49
* 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 @@
2833
* Single internal arg parse function [#56](https://github.com/CLIUtils/CLI11/pull/56)
2934
* Allow options to be disabled from INI file, rename `add_config` to `set_config` [#60](https://github.com/CLIUtils/CLI11/pull/60)
3035

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

3349
* Added functional form of flag [#33](https://github.com/CLIUtils/CLI11/pull/33), automatic on C++14
3450
* Fixed Config file search if passed on command line [#30](https://github.com/CLIUtils/CLI11/issues/30)
@@ -38,20 +54,27 @@
3854
* Required positionals now take priority over subcommands [#23](https://github.com/CLIUtils/CLI11/issues/23)
3955
* Extra requirements enforced by Travis
4056

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

4361
* Added simple support for enumerations, allow non-printable objects [#12](https://github.com/CLIUtils/CLI11/issues/12)
4462
* Added `app.parse_order()` with original parse order ([#13](https://github.com/CLIUtils/CLI11/issues/13), [#16](https://github.com/CLIUtils/CLI11/pull/16))
4563
* Added `prefix_command()`, which is like `allow_extras` but instantly stops and returns. ([#8](https://github.com/CLIUtils/CLI11/issues/8), [#17](https://github.com/CLIUtils/CLI11/pull/17))
4664
* Removed Windows warning ([#10](https://github.com/CLIUtils/CLI11/issues/10), [#20](https://github.com/CLIUtils/CLI11/pull/20))
4765
* 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))
4866

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+
5071
* Cleanup using `clang-tidy` and `clang-format`
5172
* Small improvements to Timers, easier to subclass Error
5273
* Move to 3-Clause BSD license
5374

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

5679
* Better CMake named target (CLI11)
5780
* More warnings added, fixed
@@ -61,12 +84,16 @@
6184
* Support for complex numbers
6285
* Subcommands now test true/false directly or with `->parsed()`, cleaner parse
6386

64-
## Version 0.8
87+
## Version 0.8: CLIUtils
88+
89+
This release moved the repository to the CLIUtils master organization.
6590

6691
* Moved to CLIUtils on GitHub
6792
* Fixed docs build and a few links
6893

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

7198
* Allow comments in ini files (lines starting with `;`)
7299
* Ini files support flags, vectors, subcommands
@@ -77,15 +104,17 @@
77104
* Adding extra utilities in full version only, `Timer` (not needed for parsing, but useful for general CLI applications).
78105
* Better support for custom `add_options` like functions.
79106

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

82111
* Simplified parsing to use `vector<string>` only
83112
* Fixed fallthrough, made it optional as well (default: off): `.fallthrough()`.
84113
* Added string versions of `->requires()` and `->excludes()` for consistency.
85114
* Renamed protected members for internal consistency, grouped docs.
86115
* Added the ability to add a number to `.require_subcommand()`.
87116

88-
## Version 0.5
117+
## Version 0.5: Windows support
89118

90119
* Allow `Hidden` options.
91120
* Throw `OptionAlreadyAdded` errors for matching subcommands or options, with ignore-case included, tests
@@ -97,15 +126,15 @@
97126
* Support for quotes and spaces in ini files
98127
* Fixes to allow support for Windows (added Appveyor) (Uses `-`, not `/` syntax)
99128

100-
## Version 0.4
129+
## Version 0.4: Ini support
101130

102131
* Updates to help print
103132
* Removed `run`, please use `parse` unless you subclass and add it
104133
* Supports ini files mixed with command line, tested
105134
* Added Range for further Plumbum compatibility
106135
* Added function to print out ini file
107136

108-
## Version 0.3
137+
## Version 0.3: Plumbum compatibility
109138

110139
* Added `->requires`, `->excludes`, and `->envname` from [Plumbum](http://plumbum.readthedocs.io/en/latest/)
111140
* Supports `->mandatory` from Plubmum
@@ -117,7 +146,7 @@
117146
* Clang 3.5 now required for tests due to googlemock usage, 3.4 should still work otherwise
118147
* Changes `setup` for an explicit help bool in constructor/`add_subcommand`
119148

120-
## Version 0.2
149+
## Version 0.2: Leaner and meaner
121150

122151
* Moved to simpler syntax, where `Option` pointers are returned and operated on
123152
* Removed `make_` style options
@@ -127,8 +156,7 @@
127156
* Added `Option_p` and `App_p`, mostly for internal use
128157
* Startup sequence, including help flag, can be modified by subclasses
129158

130-
## Version 0.1
131-
132-
Initial version
159+
## Version 0.1: First release
133160

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

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ CLI11 provides all the features you expect in a powerful command line parser, wi
1515
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.
1616
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).
1717

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+
1820
### Why write another CLI parser?
1921

2022
An acceptable CLI parser library should be all of the following:

0 commit comments

Comments
 (0)