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) { ... } ... }
- 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(
Crea un valore |
|
ArgsOptionParser(Object... optionSources)
Crea un'istruzione |
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 |
|
parse(String... args)
Analizza gli argomenti della riga di comando "args", impostando i campi @Option di "optionSource" fornita al costruttore. |
|
parse(
Metodo |
|
parseBestEffort(
Metodo |
|
parseBestEffort(
Metodo |
|
parseBestEffort(String... args)
Una versione secondo il criterio del "best effort" di |
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
publicgetInopOptions ()
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]
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
publicparse (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
publicparse ( 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
publicparseBestEffort ( args)
Metodo parseBestEffort(String)
alternativo che richiede un ERROR(/List)
di
argomenti
Parametri | |
---|---|
args |
|
Ritorni | |
---|---|
|
a ERROR(/List) degli argomenti restanti |
analisiBestEffort
publicparseBestEffort ( 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
publicparseBestEffort (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 |