ArgsOptionParser
public class ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
Popola i campi Option
da argomenti della riga di comando analizzati.
Option
. Un'opzione lunga viene mappata al nome Option
e un'opzione breve viene mappata al nome breve Option
. Ciascun nome di opzione e nome breve di opzione deve essere univoco rispetto a tutti gli altri campi Option
all'interno dello stesso oggetto. Un singolo argomento di opzione può essere mappato su più campi Option
con lo stesso nome su più oggetti. Gli argomenti Option
possono avere spazi 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.Un'opzione breve semplice è un "-" seguito da un carattere di opzione breve. Se l'opzione richiede un argomento (il che è vero per qualsiasi opzione non booleana), può essere scritto come parametro separato, ma non è necessario che lo sia. 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, questo 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 booleana lunga '--name' ottiene automaticamente un compagno '--no-name'. Data un'opzione "--flag", allora "--flag", "--no-flag", "--flag=true" e "--flag=false" sono tutti validi, sebbene nemmeno "--flag true" né "--flag false" sono consentiti (poiché "--flag" da solo è sufficiente, i seguenti "true" o "false" vengono interpretati 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 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 getopt(1).
- Modulo "optparse" di Python (http://docs.python.org/library/optparse.html)
- le "Linee guida per la sintassi delle utilità" POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- gli "Standard per le interfacce della riga di comando" GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
Guarda anche:
Riepilogo
Costruttori pubblici | |
---|---|
ArgsOptionParser ( optionSources) ArgsOptionParser ( optionSources) Crea un | |
ArgsOptionParser (Object... optionSources) Crea un |
Metodi pubblici | |
---|---|
getInopOptions () Restituisce l'insieme di opzioni che non hanno modificato alcun valore predefinito. | |
static String | getOptionHelp (boolean importantOnly, Object optionObject) Genera il testo della guida per tutti i campi |
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 | |
parseBestEffort ( args) parseBestEffort ( args) Metodo | |
parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue) Metodo | |
parseBestEffort (String... args) Una versione ottimale di | |
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 |
Lancia | |
---|---|
ConfigurationException | se gli oggetti di configurazione sono configurati in modo errato. |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
Crea un ArgsOptionParser
per uno o più oggetti.
Parametri | |
---|---|
optionSources | Object : gli oggetti di configurazione. |
Lancia | |
---|---|
ConfigurationException | se gli oggetti di configurazione sono configurati in modo errato. |
Metodi pubblici
getInopOptions
publicgetInopOptions ()
Restituisce l'insieme di opzioni che non hanno modificato alcun valore predefinito.
ritorna | |
---|---|
getOptionHelp
public static String getOptionHelp (boolean importantOnly, Object optionObject)
Genera il testo della guida per tutti i campi Option
in opzioneOggetto .
[-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 l'aiuto per le opzioni importanti |
optionObject | Object : l'oggetto per cui stampare il testo della guida |
ritorna | |
---|---|
String | una stringa contenente testo di aiuto intuitivo per tutti i campi di opzione |
analizzare
publicparse (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. |
Lancia | |
---|---|
ConfigurationException | se si è verificato un errore durante l'analisi degli argomenti. |
analizzare
publicparse ( args)
Metodo 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. |
Lancia | |
---|---|
ConfigurationException | se si è verificato un errore durante l'analisi degli argomenti. |
parseBestEffort
publicparseBestEffort ( args)
Metodo parseBestEffort(String)
alternativo che accetta un ERROR(/List)
di argomenti
Parametri | |
---|---|
args |
ritorna | |
---|---|
un ERROR(/List) degli argomenti rimanenti |
parseBestEffort
publicparseBestEffort ( 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 | |
forceContinue | boolean : vero se deve continuare ad analizzare anche se alcuni argomenti non vengono analizzati. |
ritorna | |
---|---|
un ERROR(/List) degli argomenti rimanenti |
parseBestEffort
publicparseBestEffort (String... args)
Una versione ottimale di parse(String)
. Se viene lanciata una ConfigurationException, l'eccezione viene catturata internamente e vengono restituiti gli argomenti rimanenti (incluso l'argomento che ha causato la generazione dell'eccezione). Questo metodo non lancia.
Parametri | |
---|---|
args | String |
ritorna | |
---|---|
un ERROR(/List) degli argomenti rimanenti |
validateMandatoryOptions
public void validateMandatoryOptions ()
Verifica che tutti i campi contrassegnati come obbligatori siano stati impostati.
Lancia | |
---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException |