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 di opzione può essere mappato a più campi Option con lo stesso nome in più oggetti. È possibile assegnare uno spazio dei nomi agli argomenti Option per fare riferimento in modo univoco a un campo Option all'interno di un singolo oggetto utilizzando il nome completo della classe dell'oggetto o il valore dell'alias OptionClass separato da ":". Ad esempio,

 --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 distinto, ma non è necessario. 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 "--" seguito 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 trattino 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 rispettive 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 man di 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 valore 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 alcun valore predefinito.

Ritorni

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

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

Il testo di aiuto 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 verifica 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 verifica 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
a ERROR(/List) degli argomenti restanti

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: True se l'analisi deve continuare 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