argparse 3.0

ОсвобоТдаванС Π½Π° вСрсия 3.0 C++ (Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ C++17) Π·Π°Π³Π»Π°Π²Π½Π° само Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° парсинг Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ 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();

  • Π΄ΠΎΠ±Π°Π²Π΅Π½ прСнасочСн Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 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;
  • Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ изравняванС ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½Π° Π½Π° многострочната ΠΏΠΎΠΌΠΎΡ‰ Π·Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅;
  • отстранСни са ΠΌΠ½ΠΎΠ³ΠΎ Π³Ρ€Π΅ΡˆΠΊΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster