argparse 3.0

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рддрд░реНрдХ рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА 3.0 C++ (C++17 рдмреЛрд▓реА) рд╣реЗрдбрд░-рдУрдиреНрд▓реА рд▓рд╛рдпрдмреНрд░рд░реАрдЪреЗ рдкреНрд░рдХрд╛рд╢рди argparse, MIT рдкрд░рд╡рд╛рдиреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░реАрдд рдХреЗрд▓реЗ.

рдирд╡реАрди рдХрд╛рдп рдЖрд╣реЗ:

  • рдкрд░рд╕реНрдкрд░ рдЕрдирдиреНрдп рдпреБрдХреНрддрд┐рд╡рд╛рджрд╛рдВрд╕рд╛рдареА рдЬреЛрдбрд▓реЗрд▓реЗ рд╕рдорд░реНрдерди:

рдСрдЯреЛ &рдЧреНрд░реБрдк = program.add_mutually_exclusive_group(); group.add_argument("тАФрдкреНрд░рдердо"); group.add_argument("тАФрд╕реЗрдХрдВрдж");

  • C++20 рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд▓реЗ;
  • рдПрдХрд╛рдзрд┐рдХ рдореВрд▓реНрдпрд╛рдВрдордзреВрди рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди:

program.add_argument("рдЗрдирдкреБрдЯ") .default_value(std::string{"baz"}) .choices("foo", "bar", "baz"); program.add_argument("count") .default_value(0).рдирд┐рд╡рдбреА(0, 1, 2, 3, 4, 5);

  • рдмрд╛рдпрдирд░реА рдиреЛрдЯреЗрд╢рдирд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде 0b101:

argparse::ArgumentParser рдкреНрд░реЛрдЧреНрд░рд╛рдо("рдЪрд╛рдЪрдгреА"); program.add_argument("-n").scan<'b', uint8_t>();

  • is_subcommand_used рдЪреА рдУрд╡реНрд╣рд░рд▓реЛрдб рдЖрд╡реГрддреНрддреА рдЬреЛрдбрд▓реА, рдЬреА рд╕рдмрдХрдорд╛рдВрдб рдкрд╛рд░реНрд╕рд░ рд╕реНрд╡реАрдХрд╛рд░рддреЗ;
  • ArgumentParser рдордзреНрдпреЗ exit_on_default_arguments рдкреЕрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд▓реЗ;
  • --help рдХрдорд╛рдВрдбрдЪреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯрдордзреВрди рд╕рдмрдХрдорд╛рдВрдб рд▓рдкрд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ:

argparse::ArgumentParser рдкреНрд░реЛрдЧреНрд░рд╛рдо("рдЪрд╛рдЪрдгреА"); argparse::ArgumentParser hidden_cmd("рд▓рдкрд╡рд┐рд▓реЗрд▓реЗ"); hidden_cmd.add_argument("files").remaining(); hidden_cmd.set_suppress(рд╕рддреНрдп); program.add_subparser(hidden_cmd);

  • ArgumentParser рдордзреНрдпреЗ рдкрд╛рд░реНрд╕ рдХреЗрд▓реЗрд▓реА рдореВрд▓реНрдпреЗ рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА;
  • рд╡рд┐рддрд░реНрдХрд╛рдВрд╕рд╛рдареА рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рдорджрдд рд╕реНрддрдВрднрд╛рдд рдЬреЛрдбрд▓реЗрд▓реЗ рд╕рдВрд░реЗрдЦрди;
  • рдЕрдиреЗрдХ рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ рдЖрд╣реЗ.

рд╕реНрддреНрд░реЛрдд: linux.org.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛