mirror of
https://github.com/KeqingMoe/argparse.git
synced 2025-11-28 15:44:39 +00:00
- Display mutually exclusive arguments as ``[[-a]|[-b]]`` in usage
- Add ... trailer to repeatable arguments in usage: ``[-x]...``
- Implement the following enhancements:
By default usage is reported on a single line.
The ``ArgumentParser::set_usage_max_line_width(width)`` method can be used
to display the usage() on multiple lines, by defining the maximum line width.
It can be combined with a call to ``ArgumentParser::set_usage_break_on_mutex()``
to ask grouped mutually exclusive arguments to be displayed on a separate line.
``ArgumentParser::add_usage_newline()`` can also be used to force the next
argument to be displayed on a new line in the usage output.
The following snippet
```cpp
argparse::ArgumentParser program("program");
program.set_usage_max_line_width(80);
program.set_usage_break_on_mutex();
program.add_argument("--quite-long-option-name").flag();
auto &group = program.add_mutually_exclusive_group();
group.add_argument("-a").flag();
group.add_argument("-b").flag();
program.add_argument("-c").flag();
program.add_argument("--another-one").flag();
program.add_argument("-d").flag();
program.add_argument("--yet-another-long-one").flag();
program.add_argument("--will-go-on-new-line").flag();
program.add_usage_newline();
program.add_argument("--new-line").flag();
std::cout << program.usage() << std::endl;
```
will display:
```console
Usage: program [--help] [--version] [--quite-long-option-name]
[[-a]|[-b]]
[-c] [--another-one] [-d] [--yet-another-long-one]
[--will-go-on-new-line]
[--new-line]
```
Furthermore arguments can be separated into several groups by calling
``ArgumentParser::add_group(group_name)``. Only optional arguments should
be specified after the first call to add_group().
```cpp
argparse::ArgumentParser program("program");
program.set_usage_max_line_width(80);
program.add_argument("-a").flag().help("help_a");
program.add_group("Advanced options");
program.add_argument("-b").flag().help("help_b");
```
will display:
```console
Usage: program [--help] [--version] [-a]
Advanced options:
[-b]
```
|
||
|---|---|---|
| .. | ||
| .gitignore | ||
| argparse_details.cppm | ||
| CMakeLists.txt | ||
| doctest.hpp | ||
| main.cpp | ||
| README.md | ||
| test_actions.cpp | ||
| test_append.cpp | ||
| test_as_container.cpp | ||
| test_bool_operator.cpp | ||
| test_choices.cpp | ||
| test_compound_arguments.cpp | ||
| test_container_arguments.cpp | ||
| test_default_args.cpp | ||
| test_default_value.cpp | ||
| test_equals_form.cpp | ||
| test_error_reporting.cpp | ||
| test_get.cpp | ||
| test_help.cpp | ||
| test_hidden_alias.cpp | ||
| test_invalid_arguments.cpp | ||
| test_is_used.cpp | ||
| test_issue_37.cpp | ||
| test_mutually_exclusive_group.cpp | ||
| test_negative_numbers.cpp | ||
| test_optional_arguments.cpp | ||
| test_parent_parsers.cpp | ||
| test_parse_args.cpp | ||
| test_parse_known_args.cpp | ||
| test_positional_arguments.cpp | ||
| test_prefix_chars.cpp | ||
| test_repr.cpp | ||
| test_required_arguments.cpp | ||
| test_scan.cpp | ||
| test_store_into.cpp | ||
| test_stringstream.cpp | ||
| test_subparsers.cpp | ||
| test_utility.hpp | ||
| test_version.cpp | ||
Argparse Tests
Linux
$ mkdir build
$ cd build
$ cmake ../.
$ make
$ ./tests
Windows
- Generate Visual Studio solution
$ mkdir build
$ cd build
$ cmake ../. -G "Visual Studio 15 2017"
- Open ARGPARSE.sln
- Build tests in RELEASE | x64
- Run tests.exe