ArgsOptionParser
public class ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
Popola i campi Option
dagli 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 opzione e nome breve opzione deve essere univoco rispetto a tutti gli altri campi Option
all'interno dello stesso oggetto. Un singolo argomento opzione può essere mappato a più campi Option
con lo stesso nome su più oggetti. Gli argomenti Option
possono essere assegnati allo 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 scritta 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 scritta direttamente dopo il nome dell'opzione, separata da "=", o come argomento successivo. (Ovvero, "--file=out.txt" o "--file out.txt".) Un'opzione lunga booleana "--name" ottiene automaticamente un compagno "--no-name". Data un'opzione "--flag", quindi "--flag", "--no-flag", "--flag=true" e "--flag=false" sono tutti validi, sebbene nessuno dei due "--flag vero" né "--flag false" sono consentiti (poiché "--flag" di per sé è sufficiente, il seguente "vero" o "falso" viene interpretato separatamente). Puoi usare "sì" e "no" come sinonimi di "vero" e "falso". Ogni stringa che non inizia con un "-" e non un argomento richiesto di un'opzione precedente è un argomento posizionale non opzionale, come 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" di 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) Emetti 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) | |
parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue) | |
parseBestEffort (String... args) Una versione best-effort di | |
void | validateMandatoryOptions () Convalida che tutti i campi contrassegnati come obbligatori sono stati impostati. |
Costruttori pubblici
ArgsOptionParser
public ArgsOptionParser (optionSources)
Crea un ArgsOptionParser
per una raccolta di oggetti.
Parametri | |
---|---|
optionSources |
Tiri | |
---|---|
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. |
Tiri | |
---|---|
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)
Emetti 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 la guida per le opzioni importanti |
optionObject | Object : l'oggetto per cui stampare il testo della guida |
ritorna | |
---|---|
String | una stringa contenente un testo della guida di facile utilizzo per tutti i campi 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 | |
---|---|
a ERROR(/List) degli argomenti posizionali rimasti dopo l'elaborazione di tutte le opzioni. |
Tiri | |
---|---|
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 |
ritorna | |
---|---|
a ERROR(/List) degli argomenti posizionali rimasti dopo l'elaborazione di tutte le opzioni. |
Tiri | |
---|---|
ConfigurationException | se si è verificato un errore durante l'analisi degli argomenti. |
parseBestEffort
publicparseBestEffort ( args)
parseBestEffort(String)
alternativo che accetta un ERROR(/List)
di argomenti
Parametri | |
---|---|
args |
ritorna | |
---|---|
a ERROR(/List) degli argomenti rimanenti |
parseBestEffort
publicparseBestEffort ( args, boolean forceContinue)
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 : True se dovrebbe continuare ad analizzare anche se alcuni argomenti non vengono analizzati. |
ritorna | |
---|---|
a ERROR(/List) degli argomenti rimanenti |
parseBestEffort
publicparseBestEffort (String... args)
Una versione best-effort di parse(String)
. Se viene generata un'eccezione 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 lancia.
Parametri | |
---|---|
args | String |
ritorna | |
---|---|
a ERROR(/List) degli argomenti rimanenti |
validateOpzioni obbligatorie
public void validateMandatoryOptions ()
Convalida che tutti i campi contrassegnati come obbligatori sono stati impostati.
Tiri | |
---|---|
ConfigurationException |