mirror of
https://github.com/KeqingMoe/argparse.git
synced 2025-07-03 14:44:40 +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