Un simple uso, componer, solo encabezado, argumentos de línea de comandos analizadores para C ++ 11 y más allá.
| Obtener | |
| Licencia | |
| Estándares | |
| Estadísticas | |
| Pruebas |
Distribuido bajo la licencia de software Boost, versión 1.0. (Consulte el archivo que acompaña a License.txt o copie en http://www.boost.org/license_1_0.txt)
Encabezado solo sin dependencias externas (excepto la biblioteca std ).
Defina su interfaz una vez para obtener análisis, conversiones de tipo y cadenas de uso sin redundancia.
Composición. Cada opt o arg es un analizador independiente. Combine estos para producir un analizador compuesto, esto se puede hacer en etapas en múltiples llamadas de funciones, o incluso proyectos.
Ate de los analizadores directamente a variables que recibirán los resultados del análisis, sin diccionarios intermedios de los que preocuparse.
O también puede unir los analizadores a Lambdas para un mayor manejo costumbre.
Deduce tipos de variables unidas o lambdas y realiza conversiones de tipo (a través de ostream << ), con manejo de errores, detrás de escena.
Unir los analizadores a los vectores para los ARG que pueden tener múltiples valores.
Utiliza tipos de resultados para la propagación de errores, en lugar de excepciones (aún no se construye con excepciones deshabilitadas, pero eso vendrá más tarde)
Modelos de estándares POSIX para un comportamiento OPT corto y largo.
Sintaxis de opción personalizable.
Especifique la cardinalidad de arg -s de uno a muchos.
Limite los valores de la opción a un conjunto especificado de valores.
Grupos de argumentos recursivos con devolución de llamada para la detección. Esto permite especificaciones de submand sencillas y genéricas.
Para usar, solo #include <lyra/lyra.hpp>
Se puede crear un analizador para una sola opción como esta:
int width = 0 ;
auto cli = lyra::cli()
| lyra::opt( width, " width " )
[ " -w " ][ " --width " ]
( " How wide should it be? " );Puedes usar este analizador directamente así:
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.Tenga en cuenta que las excepciones no se usan para el manejo de errores.
Puede combinar analizadores componiendo con | , como esto:
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 opciones que comienzan con un tablero corto ( - ) o Long Dash ( -- ). Las opciones se pueden tomar argumentos (como -w 42 ), en cuyo caso el opt toma un segundo argumento: una pista, o son banderas puras (como -d ), en cuyo caso el opt solo tiene un argumento, que debe ser un booleano. Los nombres de las opciones se proporcionan en uno o más conjuntos de soportes cuadrados, y una cadena de descripción se puede proporcionar entre paréntesis. El primer argumento a una opt es cualquier miembro variable, local, global, de cualquier tipo que pueda convertirse de una cadena usando std::ostream .
arg especifica argumentos que no están vinculados a las opciones, por lo que no tienen nombres de soporte cuadrado. De lo contrario, funcionan como opt .
Se puede obtener una cadena de uso insertando el analizador en una corriente. La cadena de uso está construida a partir de la información suministrada.
Como conveniencia, las opciones de ayuda estándar ( -h , --help y -? ) Se pueden especificar utilizando el analizador help , que solo toma un booleano para unirse.
Hay una versión de un solo cabezal que se genera a partir de los archivos de origen. Puede encontrarlo en data/single_include/lyra/lyra.hpp . Algunas advertencias para ello:
No es el método preferido para usar la biblioteca.
No se prueba a fondo.
Está destinado a casos de uso como Compiler Explorer. Donde permite la experimentación inmediata.
El apoyo para TI no será una prioridad.
Por lo tanto, prefiere usar las fuentes regulares de múltiples archivos en sus proyectos.
Para obtener más información y documentación, consulte el sitio web.