ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
| java.lang.Object | ||
| ↳ | com.android.tradefed.config.OptionSetter | |
| ↳ | com.android.tradefed.config.ArgsOptionParser | |
Compila i campi Option dagli argomenti della riga di comando analizzati.
Le stringhe nell'array String[] vengono analizzate da sinistra a destra. Ogni stringa viene classificata come opzione breve (ad esempio "-v"), opzione lunga (ad esempio "--verbose"), argomento di un'opzione (ad esempio "out.txt" in "-f out.txt") o argomento posizionale non opzionale.
Ogni argomento di opzione deve essere mappato a uno o più campi Option. Un'opzione lunga corrisponde al nome Option e un'opzione breve corrisponde al nome breve Option. Ogni nome di opzione e
nome breve dell'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
in più oggetti. Gli argomenti Option possono essere inclusi 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 dell'oggetto o il valore dell'alias OptionClass separato da ":". Ad esempio:
--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 vale per qualsiasi opzione non booleana), può essere scritta come parametro separato, ma non è necessario. ovvero "-f out.txt" e "-fout.txt" sono entrambi accettabili.
È possibile specificare più opzioni brevi dopo un singolo "-" a condizione che 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" riceve automaticamente un'opzione complementare "--no-name". Data un'opzione "--flag", allora "--flag", "--no-flag", "--flag=true" e "--flag=false" sono tutti validi, anche se non sono consentiti "--flag true" né "--flag false" (poiché "--flag" è sufficiente, il successivo "true" o "false" viene interpretato separatamente). Puoi utilizzare "yes" e "no" come sinonimi di "true" e "false".
Ogni stringa che non inizia con "-" e non è un argomento obbligatorio di un'opzione precedente è un argomento posizionale non opzionale, così come tutte le stringhe successive. Ogni stringa dopo "--" è un argomento posizionale non opzionale.
I campi corrispondenti alle opzioni vengono aggiornati man mano che le opzioni vengono elaborate. Gli eventuali 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) {
...
}
...
}
- la pagina del manuale di getopt(1)
- Modulo "optparse" di Python (http://docs.python.org/library/optparse.html)
- le "Utility Syntax Guidelines" POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- gli "Standard per le interfacce a riga di comando" di GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
Vedi anche:
Riepilogo
Costruttori pubblici | |
|---|---|
ArgsOptionParser(Object... optionSources)
Crea un |
|
ArgsOptionParser(Collection<Object> optionSources)
Crea un |
|
Metodi pubblici | |
|---|---|
Set<String>
|
getInopOptions()
Restituisce l'insieme di opzioni che non hanno modificato alcun valore predefinito. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
Testo guida di output per tutti i campi |
List<String>
|
parse(List<String> args)
Metodo |
List<String>
|
parse(String... args)
Analizza gli argomenti della riga di comando "args", impostando i campi @Option di "optionSource" fornito al costruttore. |
List<String>
|
parseBestEffort(List<String> args)
Metodo |
List<String>
|
parseBestEffort(List<String> args, boolean forceContinue)
Metodo |
List<String>
|
parseBestEffort(String... args)
Una versione di |
void
|
validateMandatoryOptions()
Verifica che tutti i campi contrassegnati come obbligatori siano stati impostati. |
Costruttori pubblici
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
Crea un ArgsOptionParser per uno o più oggetti.
| Parametri | |
|---|---|
optionSources |
Object: gli oggetti di configurazione. |
| Genera | |
|---|---|
ConfigurationException |
se gli oggetti config non sono configurati correttamente. |
ArgsOptionParser
public ArgsOptionParser (Collection<Object> optionSources)
Crea un ArgsOptionParser per una raccolta di oggetti.
| Parametri | |
|---|---|
optionSources |
Collection: gli oggetti di configurazione. |
| Genera | |
|---|---|
ConfigurationException |
se gli oggetti config non sono configurati correttamente. |
Metodi pubblici
getInopOptions
public Set<String> getInopOptions ()
Restituisce l'insieme di opzioni che non hanno modificato alcun valore predefinito.
| Resi | |
|---|---|
Set<String> |
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly,
Object optionObject)Testo guida di output per tutti i campi Option in optionObject.
Il testo della guida per ogni opzione avrà il 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 |
| Resi | |
|---|---|
String |
Una stringa contenente un testo di aiuto intuitivo per tutti i campi Opzione |
parse
public List<String> parse (List<String> args)
Metodo ERROR(/#parse(String. args)) alternativo che accetta un List di argomenti
| Parametri | |
|---|---|
args |
List |
| Resi | |
|---|---|
List<String> |
un List degli argomenti posizionali rimasti dopo l'elaborazione di tutte le opzioni. |
| Genera | |
|---|---|
ConfigurationException |
se si è verificato un errore durante l'analisi degli argomenti. |
parse
public List<String> parse (String... args)
Analizza gli argomenti della riga di comando "args", impostando i campi @Option di "optionSource" fornito al costruttore.
| Parametri | |
|---|---|
args |
String |
| Resi | |
|---|---|
List<String> |
un List degli argomenti posizionali rimasti dopo l'elaborazione di tutte le opzioni. |
| Genera | |
|---|---|
ConfigurationException |
se si è verificato un errore durante l'analisi degli argomenti. |
parseBestEffort
public List<String> parseBestEffort (List<String> args)
Metodo ERROR(/#parseBestEffort(String. args)) alternativo che accetta un List di
argomenti
| Parametri | |
|---|---|
args |
List |
| Resi | |
|---|---|
List<String> |
un List degli argomenti rimanenti |
parseBestEffort
public List<String> parseBestEffort (List<String> args,
boolean forceContinue)Metodo ERROR(/#parseBestEffort(String. args)) alternativo che accetta un List di
argomenti e può essere forzato a continuare l'analisi fino alla fine, anche se alcuni argomenti non
vengono analizzati.
| Parametri | |
|---|---|
args |
List: elenco che conterrà gli argomenti rimanenti. |
forceContinue |
boolean: True se deve continuare l'analisi anche se alcuni argomenti non vengono analizzati. |
| Resi | |
|---|---|
List<String> |
un List degli argomenti rimanenti |
parseBestEffort
public List<String> parseBestEffort (String... args)
Una versione di ERROR(/#parse(String. args)) realizzata al meglio delle nostre possibilità. Se viene generata un'eccezione ConfigurationException, questa viene acquisita internamente e vengono restituiti gli argomenti rimanenti (incluso l'argomento che ha causato la generazione dell'eccezione). Questo metodo non genera eccezioni.
| Parametri | |
|---|---|
args |
String |
| Resi | |
|---|---|
List<String> |
un List degli argomenti rimanenti |
validateMandatoryOptions
public void validateMandatoryOptions ()
Verifica che tutti i campi contrassegnati come obbligatori siano stati impostati.
| Genera | |
|---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |
|