ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Compila i campi Option dagli argomenti della riga di comando analizzati.

Le stringhe nell'array String passato vengono analizzate da sinistra a destra. Ogni stringa è classificata come opzione breve (ad es. "-v"), opzione lunga (ad es. "--verbose"), argomento di un'opzione (ad es. "out.txt" in "-f out.txt") o argomento posizionale non opzione.

Ogni argomento opzione deve essere mappato a uno o più campi Option. Un'opzione lunga viene associata al nome Option, mentre un'opzione breve viene associata al nome breve Option. Ogni nome e nome breve dell'opzione deve essere univoco rispetto a tutti gli altri campi Option all'interno dello stesso oggetto.

Un singolo argomento opzionale può essere mappato a più campi Option con lo stesso nome in più oggetti. Gli argomenti Option possono essere associati a un nome di spazio dei nomi per fare riferimento in modo univoco a un Option campo all'interno di un singolo oggetto utilizzando il nome completo della classe dell'oggetto o il valore dell'OptionClass alias separato da ":". ad es.

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

Un'opzione breve semplice è un "-" seguito da un carattere di opzione breve. Se l'opzione richiede un argomento (il che vale per qualsiasi opzione non booleana), può essere scritta come parametro separato, ma non è obbligatorio. In altre parole, sono accettabili sia "-f out.txt" che "-fout.txt".

È possibile specificare più opzioni brevi dopo un singolo carattere "-", purché tutte (tranne possibilmente le ultime) non richiedono argomenti.

Un'opzione lunga inizia con "--" seguita da diversi caratteri. Se l'opzione richiede un argomento, può essere scritto direttamente dopo il nome dell'opzione, separato da "=" o come prossimo argomento. ovvero "--file=out.txt" o "--file out.txt".

Un'opzione booleana lunga "--name" ottiene automaticamente un'opzione complementare "--no-name". Data un'opzione "--flag", "--flag", "--no-flag", "--flag=true" e "--flag=false" sono tutti validi, anche se né "--flag true" né "--flag false" sono consentiti (poiché "--flag" da solo è sufficiente, il successivo "true" o "false" viene interpretato separatamente). Puoi utilizzare "yes" e "no" come sinonimi di "true" e "false".

Ogni stringa che non inizia con un "-" e non è un argomento obbligatorio di un'opzione precedente è un argomento posizionale non opzione, così come tutte le stringhe successive. Ogni stringa dopo un "--" è un argomento posizionale non opzione.

I campi corrispondenti alle opzioni vengono aggiornati man mano che le opzioni vengono elaborate. Eventuali argomenti posizionali rimanenti vengono restituiti come List<String>.

Ecco un semplice esempio:

 // 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) {
        ...
     }
     ...

 }

 
Vedi anche:
  • la pagina di manual getopt(1)
  • Modulo "optparse" di Python (http://docs.python.org/library/optparse.html)
  • le "Linee guida per la sintassi delle utilità" di POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • gli "Standard per le interfacce a riga di comando" di GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Vedi anche:

Riepilogo

Costruttori pubblici

ArgsOptionParser( optionSources)

Crea un ArgsOptionParser per una raccolta di oggetti.

ArgsOptionParser(Object... optionSources)

Crea un ArgsOptionParser per uno o più oggetti.

Metodi pubblici

getInopOptions()

Restituisce l'insieme di opzioni che non hanno modificato i valori predefiniti.

static String getOptionHelp(boolean importantOnly, Object optionObject)

Mostra il testo della guida per tutti i campi Option in optionObject.

parse(String... args)

Analizza gli argomenti della riga di comando "args", impostando i campi @Option di "optionSource" fornito al costruttore.

parse( args)

Metodo parse(String) alternativo che accetta un ERROR(/List) di argomenti

parseBestEffort( args)

Metodo parseBestEffort(String) alternativo che accetta un ERROR(/List) di argomenti

parseBestEffort( args, boolean forceContinue)

Metodo parseBestEffort(String) alternativo che accetta un ERROR(/List) di argomenti e può essere forzato a continuare l'analisi fino alla fine, anche se alcuni argomenti non vengono analizzati.

parseBestEffort(String... args)

Una versione di parse(String) basata sul criterio del "best effort".

void validateMandatoryOptions()

Verifica che tutti i campi contrassegnati come obbligatori siano stati impostati.

Costruttori pubblici

ArgsOptionParser

public ArgsOptionParser ( optionSources)

Crea un ArgsOptionParser per una raccolta di oggetti.

Parametri
optionSources : gli oggetti di configurazione.

Lanci
ConfigurationException Se gli oggetti di configurazione non sono configurati correttamente.

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

Crea un ArgsOptionParser per uno o più oggetti.

Parametri
optionSources Object: gli oggetti di configurazione.

Lanci
ConfigurationException Se gli oggetti di configurazione non sono configurati correttamente.

Metodi pubblici

getInopOptions

public  getInopOptions ()

Restituisce l'insieme di opzioni che non hanno modificato i valori predefiniti.

Ritorni

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Mostra il testo della guida per tutti i campi Option in optionObject.

Il testo della guida per ogni opzione avrà il seguente formato

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
Il testo "Predefinito…" verrà omesso se il campo dell'opzione è nullo o vuoto.

Parametri
importantOnly boolean: se true stampa solo la guida per le opzioni importanti

optionObject Object: l'oggetto per cui stampare il testo della guida

Ritorni
String Una stringa contenente un testo di aiuto intuitivo per tutti i campi Opzione

analizzare

public  parse (String... args)

Analizza gli argomenti della riga di comando "args", impostando i campi @Option di "optionSource" fornito al costruttore.

Parametri
args String

Ritorni
un ERROR(/List) degli argomenti posizionali rimanenti dopo l'elaborazione di tutte le opzioni.

Lanci
ConfigurationException Se si è verificato un errore durante l'analisi degli argomenti.

analizzare

public  parse ( args)

Metodo parse(String) alternativo che accetta un ERROR(/List) di argomenti

Parametri
args

Ritorni
un ERROR(/List) degli argomenti posizionali rimanenti dopo l'elaborazione di tutte le opzioni.

Lanci
ConfigurationException Se si è verificato un errore durante l'analisi degli argomenti.

parseBestEffort

public  parseBestEffort ( args)

Metodo parseBestEffort(String) alternativo che accetta un ERROR(/List) di argomenti

Parametri
args

Ritorni
un ERROR(/List) degli argomenti rimanenti

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Metodo parseBestEffort(String) alternativo che accetta un ERROR(/List) di argomenti e può essere forzato a continuare l'analisi fino alla fine, anche se alcuni argomenti non vengono analizzati.

Parametri
args : elenco che conterrà gli argomenti rimanenti.

forceContinue boolean: vero se deve continuare l'analisi anche se alcuni argomenti non vengono analizzati.

Ritorni
un ERROR(/List) degli argomenti rimanenti

parseBestEffort

public  parseBestEffort (String... args)

Una versione di parse(String) basata sul criterio del "best effort". Se viene generata un'eccezione ConfigurationException, questa viene acquisita internamente e gli argomenti rimanenti (incluso l'argomento che ha causato l'eccezione) vengono restituiti. Questo metodo non genera un'eccezione.

Parametri
args String

Ritorni
un ERROR(/List) degli argomenti rimanenti

validateMandatoryOptions

public void validateMandatoryOptions ()

Verifica che tutti i campi contrassegnati come obbligatori siano stati impostati.

Lanci
com.android.tradefed.config.ConfigurationException
ConfigurationException