Um analisador simples de usar, compondo, compondo apenas a linha de comando, para C ++ 11 e além.
| Obter | |
| Licença | |
| Padrões | |
| Estatísticas | |
| Testes |
Distribuído sob a licença de software Boost, versão 1.0. (Consulte Licença de arquivo que acompanha ou copie em http://www.boost.org/license_1_0.txt)
Cabeçalho apenas sem dependências externas (exceto a biblioteca std ).
Defina sua interface uma vez para obter análise, digite conversões e seqüências de uso sem redundância.
Composição. Cada opt ou arg é um analisador independente. Combine -os para produzir um analisador composto - isso pode ser feito em estágios em várias chamadas de função - ou até projetos.
Vincie os analisadores diretamente a variáveis que receberão os resultados da análise - nenhum dicionário intermediário com que se preocupar.
Ou também pode vincular analisadores a lambdas para um manuseio mais personalizado.
Deduz tipos de variáveis ligadas ou lambdas e executa conversões de tipo (via ostream << ), com manipulação de erros, nos bastidores.
Vincular os analisadores a vetores para args que podem ter vários valores.
Usa os tipos de resultados para a propagação de erros, em vez de exceções (ainda não é construído com exceções desativadas, mas isso estará chegando mais tarde)
Modela os padrões POSIX para comportamento de opção curta e longa.
Sintaxe de opção personalizável.
Especifique a cardinalidade de arg -s de um a muitos.
Limite os valores da opção para um conjunto especificado de valores.
Grupos de argumentos recursivos com retorno de chamada para detecção. Isso permite especificações de subcomando fácil e genérico.
Para usar, apenas #include <lyra/lyra.hpp>
Um analisador para uma única opção pode ser criado assim:
int width = 0 ;
auto cli = lyra::cli()
| lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " );Você pode usar este analisador diretamente assim:
auto result = cli.parse( { argc, argv } );
if ( !result )
{
std::cerr << " Error in command line: " << result. message () << std::endl;
exit ( 1 );
}
// Everything was ok, width will have a value if supplied on command line.Observe que as exceções não são usadas para manuseio de erros.
Você pode combinar analisadores compondo com | , assim:
int width = 0 ;
std::string name;
bool doIt = false ;
std::string command;
auto cli
= lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " )
| lyra::opt( name, " name " )
[ " -n " ][ " --name " ]
( " By what name should I be known " )
| lyra::opt( doIt )
[ " -d " ][ " --doit " ]
( " Do the thing " )
| lyra::arg( command, " command " )
( " which command to run " ); opt Especifica as opções que começam com um traço curto ( - ) ou um longo traço ( -- ). As opções podem ser de argumento (como -w 42 ), caso em que o opt leva um segundo argumento -uma dica, ou são bandeiras puras (como -d ), caso em que o opt tem apenas um argumento -que deve ser um booleano. Os nomes das opções são fornecidos em um ou mais conjuntos de colchetes e uma string de descrição pode ser fornecida entre parênteses. O primeiro argumento para uma opt é qualquer variável, membro global local, de qualquer tipo que possa ser convertido de uma string usando std::ostream .
arg especifica argumentos que não estão vinculados às opções e, portanto, não têm nomes de suporte quadrado. Caso contrário, eles funcionam exatamente como opt .
Uma sequência de uso pode ser obtida inserindo o analisador em um fluxo. A sequência de uso é construída a partir das informações fornecidas.
Como conveniência, as opções de ajuda padrão ( -h , --help e -? ) Podem ser especificadas usando o analisador help , que apenas leva um booleano para se ligar.
Há uma versão de um único cabeçalho que é gerado a partir dos arquivos de origem. Você pode encontrá -lo em data/single_include/lyra/lyra.hpp . Algumas advertências para isso:
Não é o método preferido de usar a biblioteca.
Não é bem testado.
Destina -se a casos de uso como o Compiler Explorer. Onde permite experimentação imediata.
Suporte para isso não será uma prioridade.
Portanto, preferem usar as fontes de vários arquivos regulares em seus projetos.
Para mais informações e documentação, consulte o site.