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) {
...
}
...
}
- 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(Collection<Object> optionSources)
Crea un |
|
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 |
List<String>
|
parse(List<String> args)
Método |
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 |
List<String>
|
parseBestEffort(List<String> args, boolean forceContinue)
Método |
List<String>
|
parseBestEffort(String... args)
Es una versión de mejor esfuerzo de |
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]
| 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 |
|