argparse 3.0

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻ‡āĻ¨ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ 3.0 C++ (C++17 āĻ‰āĻĒāĻ­āĻžāĻˇāĻž) āĻšā§‡āĻĄāĻžāĻ°-āĻ…āĻ¨āĻ˛āĻŋ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ° āĻ°āĻŋāĻ˛āĻŋāĻœ āĻ†āĻ°ā§āĻ—āĻĒāĻžāĻ°ā§āĻ¸, MIT āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻŋ:

  • āĻĒāĻžāĻ°āĻ¸ā§āĻĒāĻ°āĻŋāĻ• āĻāĻ•āĻšā§‡āĻŸāĻŋāĻ¯āĻŧāĻž āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

āĻ…āĻŸā§‹ &āĻ—ā§āĻ°ā§āĻĒ = program.add_mutually_exclusive_group(); group.add_argument("—āĻĒā§āĻ°āĻĨāĻŽ"); group.add_argument("—āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄ");

  • C++20 āĻŽāĻĄāĻŋāĻ‰āĻ˛ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻŽāĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

program.add_argument("input") .default_value(std::string{"baz"}) .choices("foo", "bar", "baz"); program.add_argument("āĻ—āĻŖāĻ¨āĻž") .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_cmd.add_argument("files").remaining(); hidden_cmd.set_suppress(āĻ¸āĻ¤ā§āĻ¯); program.add_subparser(hidden_cmd);

  • ArgumentParser-āĻ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻž āĻŽāĻžāĻ¨ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ˛āĻžāĻ‡āĻ¨ āĻšā§‡āĻ˛ā§āĻĒ āĻ•āĻ˛āĻžāĻŽā§‡ āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§āĻ•āĻ°āĻŖ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • āĻ…āĻ¨ā§‡āĻ• āĻŦāĻžāĻ— āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡.

āĻ‰āĻ¤ā§āĻ¸: linux.org.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨