ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
Propaga campos Option
a partir de los argumentos de línea de comandos analizados.
Las cadenas de la String[] pasada se analizan de izquierda a derecha. Cada cadena se clasifica como una opción corta (como "-v"), una opción larga (como "--verbose"), un argumento para una opción (como "out.txt" en "-f out.txt") o un argumento posicional que no es una opción.
Cada argumento de opción debe asignarse a uno o más campos Option
. Una opción larga se asigna al nombre Option
y una opción corta se asigna al nombre corto Option
. Cada nombre y nombre corto de la opción deben ser únicos en relación con todos los demás campos Option
dentro del mismo objeto.
Un solo argumento de opción se puede asignar a varios campos Option
con el mismo nombre en varios objetos. Se pueden asignar espacios de nombres a los argumentos Option
para hacer referencia de forma única a un campo Option
dentro de un solo objeto mediante el nombre completo de la clase de ese objeto o su valor de alias OptionClass
separado por ":". Es decir,
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
Una opción corta y sencilla es el símbolo "-" seguido de un carácter corto. Si la opción requiere un argumento (lo que es cierto para cualquier opción que no sea booleana), se puede escribir como un parámetro independiente, pero no es necesario. Es decir, se aceptan “-f out.txt” y “-fout.txt”.
Es posible especificar varias opciones cortas después de un solo "-", siempre que todas (excepto posiblemente la última) no requieran argumentos.
Una opción larga comienza con “--” seguido de varios caracteres. Si la opción requiere un argumento, se puede escribir directamente después del nombre de la opción, separado por "=", o como el siguiente argumento. (es decir, "--file=out.txt" o "--file out.txt").
Una opción larga booleana "--name" obtiene automáticamente un complemento "--no-name". Dada una opción "--flag", "--flag", "--no-flag", "--flag=true" y "--flag=false" son válidos, aunque no se permiten "--flag true" ni "--flag false" (ya que "--flag" por sí solo es suficiente, el siguiente "true" o "false" se interpreta por separado). Puedes usar "sí" y "no" como sinónimos de "verdadero" y "falso".
Cada cadena que no comienza con un “-” y que no es un argumento obligatorio de una opción anterior es un argumento posicional no opcional, al igual que todas las cadenas sucesivas. Cada cadena después de un “--” es un argumento posicional que no es de opción.
Los campos correspondientes a las opciones se actualizan a medida que se procesan. Cualquier argumento posicional restante se muestra como una List<String>.
Este es un ejemplo sencillo:
// Non-@Option fields will be ignored. class Options { @Option(name = "quiet", shortName = 'q') boolean quiet = false; // Here the user can use --no-color. @Option(name = "color") boolean color = true; @Option(name = "mode", shortName = 'm') String mode = "standard; // Supply a default just by setting the field. @Option(name = "port", shortName = 'p') int portNumber = 8888; // There's no need to offer a short name for rarely-used options. @Option(name = "timeout" ) double timeout = 1.0; @Option(name = "output-file", shortName = 'o' }) File output; // Multiple options are added to the collection. // The collection field itself must be non-null. @Option(name = "input-file", shortName = 'i') List<File> inputs = new ArrayList<File>(); } Options options = new Options(); List<String> posArgs = new OptionParser(options).parse("--input-file", "/tmp/file1.txt"); for (File inputFile : options.inputs) { if (!options.quiet) { ... } ... }Consulta también lo siguiente:
- la página man getopt(1)
- El módulo “optparse” de Python (http://docs.python.org/library/optparse.html)
- los "Lineamientos de sintaxis de la utilidad" de POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- los “Estándares para interfaces de línea de comandos” de GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
También:
Resumen
Constructores públicos | |
---|---|
ArgsOptionParser(
Crea un |
|
ArgsOptionParser(Object... optionSources)
Crea un |
Métodos públicos | |
---|---|
|
getInopOptions()
Muestra el conjunto de opciones que no cambiaron ningún valor predeterminado. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
Muestra el texto de ayuda de todos los campos |
|
parse(String... args)
Analiza los argumentos de la línea de comandos "args" y establece los campos @Option de la "optionSource" proporcionada al constructor. |
|
parse(
Método |
|
parseBestEffort(
Método |
|
parseBestEffort(
Método |
|
parseBestEffort(String... args)
La mejor versión posible de |
void
|
validateMandatoryOptions()
Valida que se hayan configurado todos los campos marcados como obligatorios. |
Constructores públicos
ArgsOptionParser
public ArgsOptionParser (optionSources)
Crea un ArgsOptionParser
para una colección de objetos.
Parámetros | |
---|---|
optionSources |
: Los objetos de configuración. |
Arroja | |
---|---|
ConfigurationException |
si los objetos de configuración no están configurados correctamente. |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
Crea un ArgsOptionParser
para uno o más objetos.
Parámetros | |
---|---|
optionSources |
Object : Los objetos de configuración. |
Arroja | |
---|---|
ConfigurationException |
si los objetos de configuración no están configurados correctamente. |
Métodos públicos
getInopOptions
publicgetInopOptions ()
Muestra el conjunto de opciones que no cambiaron ningún valor predeterminado.
Muestra | |
---|---|
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly, Object optionObject)
Muestra el texto de ayuda de todos los campos Option
en optionObject.
El texto de ayuda de cada opción tendrá el siguiente formato:
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]Se omitirá el texto "Default…" si el campo de opción es nulo o está vacío.
Parámetros | |
---|---|
importantOnly |
boolean : Si true solo imprime ayuda para las opciones importantes. |
optionObject |
Object : Es el objeto para el que se imprimirá el texto de ayuda. |
Muestra | |
---|---|
String |
Una cadena que contiene texto de ayuda fácil de usar para todos los campos de Opciones |
parse
publicparse (String... args)
Analiza los argumentos de la línea de comandos "args" y establece los campos @Option de "optionSource" proporcionados al constructor.
Parámetros | |
---|---|
args |
String |
Muestra | |
---|---|
|
Un ERROR(/List) de los argumentos posicionales restantes después de procesar todas las opciones. |
Arroja | |
---|---|
ConfigurationException |
si se produjo un error al analizar los argumentos. |
parse
publicparse ( args)
Método parse(String)
alternativo que toma una ERROR(/List)
de argumentos
Parámetros | |
---|---|
args |
|
Muestra | |
---|---|
|
Un ERROR(/List) de los argumentos posicionales que quedan después de procesar todas las opciones. |
Arroja | |
---|---|
ConfigurationException |
si se produjo un error al analizar los argumentos. |
analizarBestEffort
publicparseBestEffort ( args)
Método parseBestEffort(String)
alternativo que toma un ERROR(/List)
de argumentos
Parámetros | |
---|---|
args |
|
Muestra | |
---|---|
|
un ERROR(/List) de los argumentos restantes |
parseBestEffort
publicparseBestEffort ( args, boolean forceContinue)
Método parseBestEffort(String)
alternativo que toma un ERROR(/List)
de argumentos y se puede forzar para que continúe el análisis hasta el final, incluso si algunos argumentos no se analizan.
Parámetros | |
---|---|
args |
: Es la lista que contendrá los argumentos restantes. |
forceContinue |
boolean : Es verdadero si se debe seguir analizando, incluso si algunos argumentos no se analizan. |
Muestra | |
---|---|
|
un ERROR(/List) de los argumentos restantes |
parseBestEffort
publicparseBestEffort (String... args)
La mejor versión posible de parse(String)
. Si se arroja una ConfigurationException, esa excepción se captura de forma interna y se muestran los argumentos restantes (incluido el argumento que causó que se arrojara la excepción). Este método no arroja errores.
Parámetros | |
---|---|
args |
String |
Muestra | |
---|---|
|
una ERROR(/List) de los argumentos restantes |
validateMandatoryOptions
public void validateMandatoryOptions ()
Valida que se hayan configurado todos los campos marcados como obligatorios.
Arroja | |
---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |