Commit 9943c0300fc0cf92c8c5cf1787a252ed06e0a49e

Authored by Henry Fredrick Schreiner
Committed by Henry Schreiner
1 parent b453aeba

Adding bits of touchup, one new example for validators

CHANGELOG.md
@@ -15,6 +15,8 @@ Changes to the help system (most normal users will not notice this): @@ -15,6 +15,8 @@ Changes to the help system (most normal users will not notice this):
15 * Removed `help_*` functions. 15 * Removed `help_*` functions.
16 * Protected function `_has_help_positional` removed. 16 * Protected function `_has_help_positional` removed.
17 * `format_help` can now be chained. 17 * `format_help` can now be chained.
  18 +* Added getters for the missing parts of options (help no longer uses any private parts).
  19 +* Help flags now use new `short_circuit` property to simplify parsing. [#121]
18 20
19 21
20 New for Config file reading and writing [#121]: 22 New for Config file reading and writing [#121]:
@@ -38,7 +40,6 @@ Validators are now much more powerful [#118], all built in validators upgraded t @@ -38,7 +40,6 @@ Validators are now much more powerful [#118], all built in validators upgraded t
38 Other changes: 40 Other changes:
39 41
40 * Fixing `parse(args)`'s `args` setting and ordering after parse. [#141] 42 * Fixing `parse(args)`'s `args` setting and ordering after parse. [#141]
41 -* Cleaner tests without `app.reset()` (and `reset` is now `clear`). [#141]  
42 * Replaced `set_custom_option` with `type_name` and `type_size` instead of `set_custom_option`. Methods return `this`. [#136] 43 * Replaced `set_custom_option` with `type_name` and `type_size` instead of `set_custom_option`. Methods return `this`. [#136]
43 * Dropped `set_` on Option's `type_name`, `default_str`, and `default_val`. [#136] 44 * Dropped `set_` on Option's `type_name`, `default_str`, and `default_val`. [#136]
44 * Removed `set_` from App's `failure_message`, `footer`, `callback`, and `name`. [#136] 45 * Removed `set_` from App's `failure_message`, `footer`, `callback`, and `name`. [#136]
@@ -46,18 +47,20 @@ Other changes: @@ -46,18 +47,20 @@ Other changes:
46 * Added `->each()` to make adding custom callbacks easier. [#126] 47 * Added `->each()` to make adding custom callbacks easier. [#126]
47 * Added filter argument to `get_subcommands`, `get_options`; use empty filter `{}` to avoid filtering. 48 * Added filter argument to `get_subcommands`, `get_options`; use empty filter `{}` to avoid filtering.
48 * Added `get_groups()` to get groups. 49 * Added `get_groups()` to get groups.
49 -* Added getters for the missing parts of options (help no longer uses any private parts).  
50 * Better support for manual options with `get_option`, `set_results`, and `empty`. [#119] 50 * Better support for manual options with `get_option`, `set_results`, and `empty`. [#119]
51 * `lname` and `sname` have getters, added `const get_parent`. [#120] 51 * `lname` and `sname` have getters, added `const get_parent`. [#120]
52 * Using `add_set` will now capture L-values for sets, allowing further modification. [#113] 52 * Using `add_set` will now capture L-values for sets, allowing further modification. [#113]
53 -* Internally, `type_name` is now a lambda function; for sets, this reads the set live. [#116]  
54 * Dropped duplicate way to run `get_type_name` (`get_typeval`). 53 * Dropped duplicate way to run `get_type_name` (`get_typeval`).
55 -* Testing (only) now uses submodules. [#111]  
56 * Removed `requires` in favor of `needs` (deprecated in last version). [#112] 54 * Removed `requires` in favor of `needs` (deprecated in last version). [#112]
  55 +* Const added to argv. [#126]
  56 +
  57 +Backend and testing changes:
  58 +
  59 +* Internally, `type_name` is now a lambda function; for sets, this reads the set live. [#116]
  60 +* Cleaner tests without `app.reset()` (and `reset` is now `clear`). [#141]
57 * Better CMake policy handling. [#110] 61 * Better CMake policy handling. [#110]
58 * Includes are properly sorted. [#120] 62 * Includes are properly sorted. [#120]
59 -* Help flags now use new `short_circuit` property to simplify parsing. [#121]  
60 -* Const added to argv. [#126] 63 +* Testing (only) now uses submodules. [#111]
61 64
62 [#109]: https://github.com/CLIUtils/CLI11/pull/109 65 [#109]: https://github.com/CLIUtils/CLI11/pull/109
63 [#110]: https://github.com/CLIUtils/CLI11/pull/110 66 [#110]: https://github.com/CLIUtils/CLI11/pull/110
examples/CMakeLists.txt
@@ -60,6 +60,20 @@ set_property(TEST subcommands_all PROPERTY PASS_REGULAR_EXPRESSION @@ -60,6 +60,20 @@ set_property(TEST subcommands_all PROPERTY PASS_REGULAR_EXPRESSION
60 "Subcommand: start" 60 "Subcommand: start"
61 "Subcommand: stop") 61 "Subcommand: stop")
62 62
  63 +add_cli_exe(validators validators.cpp)
  64 +add_test(NAME validators_help COMMAND validators --help)
  65 +set_property(TEST validators_help PROPERTY PASS_REGULAR_EXPRESSION
  66 + " -f,--file FILE File name"
  67 + " -v,--value INT in [3 - 6] Value in range")
  68 +add_test(NAME validators_file COMMAND validators --file nonex.xxx)
  69 +set_property(TEST validators_file PROPERTY PASS_REGULAR_EXPRESSION
  70 + "--file: File does not exist: nonex.xxx"
  71 + "Run with --help for more information.")
  72 +add_test(NAME validators_plain COMMAND validators --value 9)
  73 +set_property(TEST validators_plain PROPERTY PASS_REGULAR_EXPRESSION
  74 + "--value: Value 9 not in range 3 to 6"
  75 + "Run with --help for more information.")
  76 +
63 add_cli_exe(groups groups.cpp) 77 add_cli_exe(groups groups.cpp)
64 add_test(NAME groups_none COMMAND groups) 78 add_test(NAME groups_none COMMAND groups)
65 set_property(TEST groups_none PROPERTY PASS_REGULAR_EXPRESSION 79 set_property(TEST groups_none PROPERTY PASS_REGULAR_EXPRESSION
examples/validators.cpp 0 → 100644
  1 +#include "CLI/CLI.hpp"
  2 +
  3 +int main(int argc, char **argv) {
  4 +
  5 + CLI::App app("Validator checker");
  6 +
  7 + std::string file;
  8 + app.add_option("-f,--file,file", file, "File name")->check(CLI::ExistingFile);
  9 +
  10 + int count;
  11 + app.add_option("-v,--value", count, "Value in range")->check(CLI::Range(3, 6));
  12 + CLI11_PARSE(app, argc, argv);
  13 +
  14 + std::cout << "Try printing help or failing the validator" << std::endl;
  15 +
  16 + return 0;
  17 +}