Состоялся выпуск 3.0 C++ (стандарт C++17) header-only библиотеки парсинга аргументов командной строки argparse, распространяемой по лицензии MIT.
Что нового:
- добавлена поддержка взаимно исключающих аргументов:
auto &group = program.add_mutually_exclusive_group();
group.add_argument("--first");
group.add_argument("--second");
- добавлен модуль C++20;
- добавлена поддержка выбора из нескольких значений:
program.add_argument("input")
.default_value(std::string{"baz"})
.choices("foo", "bar", "baz");
program.add_argument("count")
.default_value(0)
.choices(0, 1, 2, 3, 4, 5);
- добавлена поддержка двоичной нотации, например,
0b101
:
argparse::ArgumentParser program("test");
program.add_argument("-n").scan<'b', uint8_t>();
- добавлен перегруженный вариант
is_subcommand_used
, принимающий парсер подкоманд; - в
ArgumentParser
добавлен параметрexit_on_default_arguments
; - добавлена поддержка скрытия подкоманд из вывода команды
--help
:
argparse::ArgumentParser program("test");
argparse::ArgumentParser hidden_cmd("hidden");
hidden_cmd.add_argument("files").remaining();
hidden_cmd.set_suppress(true);
program.add_subparser(hidden_cmd);
- добавлена возможность проверки наличия разобранных значений в
ArgumentParser
; - добавлено выравнивание по столбцу многострочной справки для аргументов;
- исправлены многие ошибки.
>>> Подробности