Использование анализатора командной строки Argo: Неизвестный параметр не возвращается, если параметр находится за существующим параметром
Используя этот очень хороший анализатор командной строки Argo (библиотека C++ только для заголовков), я столкнулся с небольшой проблемой. Смотрите: https://github.com/phforest/Argo
Арго возвращает: "Ошибка: неизвестная опция", когда опция не найдена, но не когда аргумент находится за известным аргументом.
Компиляция кода ниже: (inc - это расположение заголовка argo) C++ test.cpp -I inc --std= C++11
#include <iostream>
int main(int argc, char **argv)
{
argo::Configuration pcnfg;
std::vector<std::string> input_texts;
pcnfg.program.name = { "wow", "EyeOnText WoWoolConsole" };
pcnfg.program.version = { 1, 1, 1 };
argo::Arguments args(pcnfg);
args.add(argo::handler::Option("input-text", "i", input_texts).help("Input text to process."));
const auto result = args.parse(argc, argv);
switch (result.status)
{
case argo::ReturnCode::Error: std::cerr << "Error: " << result.message << std::endl; return 1;
case argo::ReturnCode::SuccessAndAbort: return 0;
default: break;
}
for ( auto const & input : input_texts )
{
std::cout << "- " << input << std::endl;
}
return 0;
}
выполнить: ./a.out --other -i "test" Ошибка: неизвестный параметр '--other' Что в порядке
выполнить:./a.out -i "test" --other - test - --other
- другое не должно быть в списке ввода.
1 ответ
(Отказ от ответственности: я разработчик библиотеки)
Я думаю, что это решается в более поздних версиях. По крайней мере, используя предоставленный код, я получаю ожидаемый результат (дважды ошибка "Неизвестная опция"). Если это не решено, мы можем использовать его для отслеживания ошибок по адресу https://gitlab.com/dgrine/Argo/issues