ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΡ 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
