Skip to content

dimbo4ka/arg-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

32 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ArgParser β€” Handy C++ CLI Argument Parser

ArgParser β€” лёгковСсная ΠΈ удобная C++ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π·Π±ΠΎΡ€Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки: строк, Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈ Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ².
ИдСальна для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… CLI-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΈ pet-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², благодаря ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ API ΠΈ Π³ΠΈΠ±ΠΊΠΎΠΉ настройкС.


ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности

  • ΠŸΠ°Ρ€ΡΠΈΠ½Π³ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² --param=value, -p=value, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π±Π΅Π· Ρ„Π»Π°Π³ΠΎΠ².
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° строк, Ρ†Π΅Π»Ρ‹Ρ… чисСл, Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ².
  • Π‘ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ API Ρ‡Π΅Ρ€Π΅Π· Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:
    • AddStringArgument(...) β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строковый Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.
    • AddIntArgument(...) β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ цСлочислСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.
    • AddFlag(...) β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³.
    • AddHelp(...) β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.
    • .Default(value) β€” ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
    • .MultiValue([min_сount]) β€” Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (с Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством).
    • .StoreValue(variable) / .StoreValues(container) β€” ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ парсинга Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.
    • .Positional() β€” ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.
    • .Help() ΠΈ .HelpDescription() β€” Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ справку/описаниС автоматичСски.
  • ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΎ тСстами Google Test (tests/argparser_test.cpp), обСспСчивая Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ удобство Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

API β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

ArgParser parser("MyApp");

// Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ с ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
parser.AddStringArgument("input")
      .StoreValue(inputPath);

// ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ числовой Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ с Π΄Π΅Ρ„ΠΎΠ»Ρ‚ΠΎΠΌ
parser.AddIntArgument("threads")
      .Default(4)
      .StoreValue(numThreads);

// ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ (повторяСмый ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 1 Ρ€Π°Π·)
std::vector<int> ids;
parser.AddIntArgument("ids")
      .MultiValue(1)
      .Positional()
      .StoreValues(ids);

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° `--help` автоматичСски
parser.AddHelp('h', "help", "Show help message");

if (!parser.Parse(args)) {
    std::cerr << parser.HelpDescription();
    return 1;
}
if (parser.Help()) {
    std::cout << parser.HelpDescription();
    return 0;
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published