Использование анализатора командной строки 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

Другие вопросы по тегам