ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Object
   ↳ com.android.tradefed.config.OptionSetter
     ↳ com.android.tradefed.config.ArgsOptionParser


Propaga los campos de Option a partir de los argumentos analizados de la línea de comandos.

Las cadenas del String[] que se pasa se analizan de izquierda a derecha. Cada String 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 de opción y nombre corto de opción debe ser único con respecto a 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. Los argumentos Option pueden tener un espacio de nombres para hacer referencia de forma única a un campo Option dentro de un solo objeto usando el nombre de clase completo de ese objeto o su valor de alias OptionClass separado por ":". es decir

 --classname:optionname optionvalue or
 --optionclassalias:optionname optionvalue.
 

Una opción abreviada simple es un guion seguido de un carácter de opción abreviada. Si la opción requiere un argumento (lo que sucede con cualquier opción no booleana), se puede escribir como un parámetro independiente, pero no es necesario. Es decir, "-f out.txt" y "-fout.txt" son aceptables.

Es posible especificar varias opciones cortas después de un solo "-", siempre y cuando 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 una opción complementaria "--no-name". Dada una opción "--flag", "--flag", "--no-flag", "--flag=true" y "--flag=false" son válidas, aunque no se permiten "--flag true" ni "--flag false" (ya que "--flag" por sí sola 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 comience con un guion "-" y que no sea un argumento obligatorio de una opción anterior es un argumento posicional que no es una opción, al igual que todas las cadenas sucesivas. Cada cadena después de "--" es un argumento posicional que no es una opción.

Los campos correspondientes a las opciones se actualizan a medida que se procesan las opciones. Los argumentos posicionales restantes se devuelven como una lista de cadenas.

Este es un ejemplo simple:

 // 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:
  • la página man de getopt(1)
  • El módulo "optparse" de Python (http://docs.python.org/library/optparse.html)
  • los "Lineamientos de sintaxis de 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(Object... optionSources)

Crea un ArgsOptionParser para uno o más objetos.

ArgsOptionParser(Collection<Object> optionSources)

Crea un ArgsOptionParser para una colección de objetos.

Métodos públicos

Set<String> getInopOptions()

Devuelve el conjunto de opciones que no cambiaron ningún valor predeterminado.

static String getOptionHelp(boolean importantOnly, Object optionObject)

Genera texto de ayuda para todos los campos Option en optionObject.

List<String> parse(List<String> args)

Método ERROR(/#parse(String. args)) alternativo que toma un List de argumentos

List<String> parse(String... args)

Analiza los argumentos de la línea de comandos "args" y establece los campos @Option del "optionSource" proporcionado al constructor.

List<String> parseBestEffort(List<String> args)

Método ERROR(/#parseBestEffort(String. args)) alternativo que toma un List de argumentos

List<String> parseBestEffort(List<String> args, boolean forceContinue)

Método ERROR(/#parseBestEffort(String. args)) alternativo que toma un List de argumentos y se puede forzar a continuar el análisis hasta el final, incluso si algunos argumentos no se analizan.

List<String> parseBestEffort(String... args)

Es una versión de mejor esfuerzo de ERROR(/#parse(String. args)).

void validateMandatoryOptions()

Valida que se hayan configurado todos los campos marcados como obligatorios.

Constructores públicos

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

Crea un ArgsOptionParser para uno o más objetos.

Parámetros
optionSources Object: Son los objetos de configuración.

Arroja
ConfigurationException si los objetos de configuración no están configurados correctamente.

ArgsOptionParser

public ArgsOptionParser (Collection<Object> optionSources)

Crea un ArgsOptionParser para una colección de objetos.

Parámetros
optionSources Collection: Son los objetos de configuración.

Arroja
ConfigurationException si los objetos de configuración no están configurados correctamente.

Métodos públicos

getInopOptions

public Set<String> getInopOptions ()

Devuelve el conjunto de opciones que no cambiaron ningún valor predeterminado.

Muestra
Set<String>

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Genera texto de ayuda para todos los campos Option en optionObject.

El texto de ayuda para cada opción tendrá el siguiente formato:

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
El texto "Predeterminado…" se omitirá si el campo de opción es nulo o está vacío.

Parámetros
importantOnly boolean: Si es 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 Option

parse

public List<String> parse (List<String> args)

Método ERROR(/#parse(String. args)) alternativo que toma un List de argumentos

Parámetros
args List

Muestra
List<String> Es un 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.

parse

public List<String> parse (String... args)

Analiza los argumentos de la línea de comandos "args" y establece los campos @Option del "optionSource" proporcionado al constructor.

Parámetros
args String

Muestra
List<String> Es un 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.

parseBestEffort

public List<String> parseBestEffort (List<String> args)

Método ERROR(/#parseBestEffort(String. args)) alternativo que toma un List de argumentos

Parámetros
args List

Muestra
List<String> List de los argumentos restantes

parseBestEffort

public List<String> parseBestEffort (List<String> args, 
                boolean forceContinue)

Método ERROR(/#parseBestEffort(String. args)) alternativo que toma un List de argumentos y se puede forzar a continuar el análisis hasta el final, incluso si algunos argumentos no se analizan.

Parámetros
args List: Es la lista que contendrá los argumentos restantes.

forceContinue boolean: Es verdadero si se debe continuar con el análisis incluso si algunos argumentos no se analizan.

Muestra
List<String> List de los argumentos restantes

parseBestEffort

public List<String> parseBestEffort (String... args)

Es una versión de mejor esfuerzo de ERROR(/#parse(String. args)). Si se arroja una ConfigurationException, esa excepción se captura de forma interna y se devuelven los argumentos restantes (incluido el argumento que provocó que se arroje la excepción). Este método no arroja excepciones.

Parámetros
args String

Muestra
List<String> 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