ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Oggetto
com.android.tradefed.config.OptionSetter
com.android.tradefed.config.ArgsOptionParser


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

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

Ogni argomento di opzione deve essere associato a uno o più campi Option . Un'opzione lunga viene mappata al nome Option e un'opzione breve viene mappata al nome breve Option . Ciascun nome opzione e nome breve 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 su più oggetti. Gli argomenti Option possono essere inseriti in uno spazio dei nomi per fare riferimento in modo univoco a un campo Option all'interno di un singolo oggetto utilizzando il nome completo della classe di quell'oggetto o il suo valore alias OptionClass separato da ':'. cioè

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

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

È possibile specificare più opzioni brevi dopo un singolo "-" purché tutte (tranne forse l'ultima) non richiedano 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 argomento successivo. (Cioè, "--file=out.txt" o "--file out.txt".)

Un'opzione lunga booleana '--name' ottiene automaticamente un compagno '--no-name'. Data un'opzione "--flag", allora "--flag", "--no-flag", "--flag=true" e "--flag=false" sono tutti validi, sebbene nessuno dei due "--flag true" né "--flag false" sono consentiti (poiché "--flag" di per sé è sufficiente, il seguente "true" o "false" è interpretato separatamente). Puoi usare "sì" e "no" come sinonimi di "vero" e "falso".

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

I campi corrispondenti alle opzioni vengono aggiornati man mano che le relative opzioni vengono elaborate. Tutti gli 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 sulla sintassi dell'utilità" POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • gli "Standards for Command Line Interfaces" GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Guarda anche:

Riepilogo

Costruttori pubblici

ArgsOptionParser ( optionSources) 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 alcun valore predefinito.

static String getOptionHelp (boolean importantOnly, Object optionObject)

Emetti il ​​testo della guida per tutti i campi Option in opzioneOggetto .

parse (String... args)

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

parse ( args) parse ( args)

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

parseBestEffort ( args) parseBestEffort ( args)

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

parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue)

Metodo alternativo parseBestEffort(String) 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 best-effort di parse(String) .

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.

Getta
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.

Getta
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.

ritorna

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Emetti il ​​testo della guida per tutti i campi Option in opzioneOggetto .

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

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
Il testo 'Predefinito...' sarà 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

ritorna
String una stringa contenente un testo di aiuto intuitivo per tutti i campi di opzione

analizzare

public  parse (String... args)

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

Parametri
args String

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

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

analizzare

public  parse ( args)

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

Parametri
args

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

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

parseBestEffort

public  parseBestEffort ( args)

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

Parametri
args

ritorna
un ERROR(/List) degli argomenti rimanenti

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Metodo alternativo parseBestEffort(String) 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 deve continuare ad analizzare anche se alcuni argomenti non vengono analizzati.

ritorna
un ERROR(/List) degli argomenti rimanenti

parseBestEffort

public  parseBestEffort (String... args)

Una versione best-effort di parse(String) . Se viene generata una ConfigurationException, tale eccezione viene acquisita internamente e vengono restituiti gli argomenti rimanenti (incluso l'argomento che ha causato la generazione dell'eccezione). Questo metodo non genera.

Parametri
args String

ritorna
un ERROR(/List) degli argomenti rimanenti

validateOpzioni obbligatorie

public void validateMandatoryOptions ()

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

Getta
com.android.tradefed.config.ConfigurationException
ConfigurationException