If you misspell or provide an option that doesn't have a parser, when at least one argument is present in the parser, the returned error code isn't very user friendly.
Easiest to show with an example.
Given this code
#include <lyra/lyra.hpp>
#include <filesystem>
#include <iostream>
int main(int argc, char** argv)
{
bool showHelp=false;
bool verbose = false;
auto cli = lyra::cli_parser();
cli.add_argument(lyra::help(showHelp));
cli.add_argument(lyra::opt(verbose)
.name("--verbose").help("Verbose logging").optional());
std::filesystem::path projectDirectory;
cli.add_argument(lyra::arg(projectDirectory, "ProjectDirectory")
.required().help("Project directory"));
auto result = cli.parse({ argc, argv });
if (!result)
{
std::cerr << result.errorMessage() << std::endl;
return 1;
}
std::cout << projectDirectory.string() << std::endl;
return 0;
}
and the commandline arguments
--foo /my/project/directory
The returned error is
Unrecognized token: /my/project/directory
Expected: Parser should recognize the '--' or '-' prefix on '--foo' and give an error about the missing option.
If you misspell or provide an option that doesn't have a parser, when at least one argument is present in the parser, the returned error code isn't very user friendly.
Easiest to show with an example.
Given this code
and the commandline arguments
--foo /my/project/directoryThe returned error is
Unrecognized token: /my/project/directoryExpected: Parser should recognize the '--' or '-' prefix on '--foo' and give an error about the missing option.