argparse 3.0

ืฉื—ืจื•ืจ ืฉืœ ืกืคืจื™ื™ืช ื›ื•ืชืจื•ืช ื‘ืœื‘ื“ 3.0 C++ (C++17 ื“ื™ืืœืงื˜) ืœื ื™ืชื•ื— ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื” ืืจื’ืคืจืก, ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ 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("ืžื‘ื—ืŸ"); program.add_argument("-n").scan<'b', uint8_t>();

  • ื”ื•ืกืคื” ื’ืจืกื” ืขืžื•ืกื” ืžื“ื™ ืฉืœ is_subcommand_used, ืฉืžืงื‘ืœืช ืžื ืชื— ืคืงื•ื“ื•ืช ืžืฉื ื”;
  • ื”ื•ืกื™ืฃ ืคืจืžื˜ืจ exit_on_default_arguments ืœ-ArgumentParser;
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืœื”ืกืชืจืช ืคืงื•ื“ื•ืช ืžืฉื ื” ืžื”ืคืœื˜ ืฉืœ ื”ืคืงื•ื“ื” --help:

argparse::ArgumentParser program("ืžื‘ื—ืŸ"); argparse::ArgumentParser hidden_cmd("hidden"); hidden_cmd.add_argument("ืงื‘ืฆื™ื").remaining(); hidden_cmd.set_suppress(true); program.add_subparser(hidden_cmd);

  • ื”ื•ืกื™ืคื” ืืช ื”ื™ื›ื•ืœืช ืœื‘ื“ื•ืง ืขืจื›ื™ื ืžื ื•ืชื—ื™ื ื‘- ArgumentParser;
  • ื”ื•ืกื™ืฃ ื™ื™ืฉื•ืจ ืœืขืžื•ื“ืช ืขื–ืจื” ืžืจื•ื‘ื” ืฉื•ืจื•ืช ืขื‘ื•ืจ ืืจื’ื•ืžื ื˜ื™ื;
  • ื‘ืื’ื™ื ืจื‘ื™ื ืชื•ืงื ื•.

ืžืงื•ืจ: linux.org.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”