Analisi opzioni Args

public class ArgsOptionParser
extends OptionSetter

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


Compila i campi Option con gli argomenti della riga di comando analizzati.

Le stringhe nella stringa passata[] vengono analizzate da sinistra a destra. Ogni stringa è classificata come un (come "-v"), un'opzione lunga (come "--verbose"), un argomento per un'opzione (ad esempio "out.txt" in "-f out.txt") o un argomento posizionale non-option.

Ogni argomento dell'opzione deve essere mappato a uno o più campi Option. Un'opzione lunga mappa Option e un'opzione breve mappa al nome breve di Option. Il nome di ogni opzione il nome breve dell'opzione deve essere univoco rispetto a tutte le altre Option campi all'interno dello stesso oggetto.

Un singolo argomento di opzione può essere mappato a più campi Option con lo stesso nome in più oggetti. Option argomenti possono avere uno 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 la relativa Valore alias OptionClass separato da ':'. ie

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

Un'opzione breve e semplice è il segno "-" seguito da un carattere di opzione breve. Se l'opzione richiede un (che è vero per qualsiasi opzione non booleana), può essere scritto come parametro separato, ma non è necessario. Vale a dire "-f out.txt" e "-fout.txt" sono entrambi accettabili.

È possibile specificare più opzioni brevi dopo un singolo carattere "-" purché tutte (tranne probabilmente l'ultimo) non richiedono argomenti.

Un'opzione lunga inizia con "--" seguiti da diversi caratteri. Se l'opzione richiede un può essere scritto direttamente dopo il nome dell'opzione, separati da "=", o come . (ad esempio "--file=out.txt" o "--file out.txt").

Un'opzione lunga booleana "--name" ottiene automaticamente lo stato "--no-name" companion. Esiste un'opzione "--flag", quindi "--flag", "--no-flag", "--flag=true" e "--flag=false" sono tutte valide, né "--flag true" né "--flag false" sono consentiti (poiché "--flag" di per sé è sufficiente, che segue "true" o "false" viene interpretata separatamente). Puoi rispondere "sì" e "no" come sinonimi per "true" e "false".

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

I campi corrispondenti alle opzioni vengono aggiornati man mano che le rispettive opzioni vengono elaborate. Qualsiasi rimanente gli argomenti posizionali 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)
  • "optparse" di Python (http://docs.python.org/library/optparse.html)
  • le POSIX "Utility Syntax Guidelines" (Linee guida per la sintassi di utilità) (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • gli "Standards for Command Line Interfaces" della GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Vedi anche:

Riepilogo

Costruttori pubblici

ArgsOptionParser( optionSources)

Crea un valore ArgsOptionParser per una raccolta di oggetti.

ArgsOptionParser(Object... optionSources)

Crea un'istruzione ArgsOptionParser per uno o più oggetti.

Metodi pubblici

getInopOptions()

Restituisce l'insieme di opzioni che non hanno modificato alcun valore predefinito.

static String getOptionHelp(boolean importantOnly, Object optionObject)

Testo della guida di output per tutti i campi Option in optionObject.

parse(String... args)

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

parse( args)

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

parseBestEffort( args)

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

parseBestEffort( args, boolean forceContinue)

Metodo parseBestEffort(String) alternativo che richiede un ERROR(/List) di argomenti ed è possibile forzarne l'esecuzione fino alla fine, anche se alcuni per l'analisi.

parseBestEffort(String... args)

Una versione secondo il criterio del "best effort" di parse(String).

void validateMandatoryOptions()

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

Costruttori pubblici

Analisi opzioni Args

public ArgsOptionParser ( optionSources)

Crea un valore ArgsOptionParser per una raccolta di oggetti.

Parametri
optionSources : gli oggetti di configurazione.

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

Analisi opzioni Args

public ArgsOptionParser (Object... optionSources)

Crea un'istruzione 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)

Testo della guida di output per tutti i campi Option in optionObject.

Il testo della guida per ciascuna opzione sarà nel seguente formato

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
Il campo "Predefinito..." il testo verrà omesso se il campo 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 facile da usare per tutti i campi Opzione

analizzare

public  parse (String... args)

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

Parametri
args String

Ritorni
un ERROR(/List) degli argomenti posizionali rimasti 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 rimasti dopo l'elaborazione di tutte le opzioni.

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

analisiBestEffort

public  parseBestEffort ( args)

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

Parametri
args

Ritorni
a ERROR(/List) degli argomenti restanti

analisiBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Metodo parseBestEffort(String) alternativo che richiede un ERROR(/List) di argomenti ed è possibile forzarne l'esecuzione fino alla fine, anche se alcuni per l'analisi.

Parametri
args : elenco che conterrà gli argomenti restanti.

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

Ritorni
a ERROR(/List) degli argomenti restanti

analisiBestEffort

public  parseBestEffort (String... args)

Una versione secondo il criterio del "best effort" di parse(String). Se viene richiesta un'eccezione Configuration generata, l'eccezione viene acquisita internamente, mentre gli argomenti rimanenti (incluso il che ha causato la generazione dell'eccezione) vengono restituiti. Questo metodo non genera alcun risultato.

Parametri
args String

Ritorni
a ERROR(/List) degli argomenti restanti

convalidaMandatoryOptions

public void validateMandatoryOptions ()

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

Lanci
com.android.tradefed.config.ConfigurationEccezione
ConfigurationException