ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
| java.lang.Object | ||
| ↳ | com.android.tradefed.config.OptionSetter | |
| ↳ | com.android.tradefed.config.ArgsOptionParser | |
Wypełnia pola Option na podstawie przeanalizowanych argumentów wiersza poleceń.
Ciągi znaków w przekazanym tablicy String[] są analizowane od lewej do prawej. Każdy ciąg jest klasyfikowany jako krótka opcja (np. „-v”), długa opcja (np. „--verbose”), argument opcji (np. „out.txt” w „-f out.txt”) lub argument pozycyjny inny niż opcja.
Każdy argument opcji musi być zmapowany na co najmniej 1 pole Option. Długa opcja jest mapowana na nazwę Option, a krótka – na nazwę Option. Każda nazwa opcji i krótka nazwa opcji muszą być unikalne w stosunku do wszystkich innych pól Option w tym samym obiekcie.
Pojedynczy argument opcji może być mapowany na wiele pól Option o tej samej nazwie w różnych obiektach. Parametry Option mogą być powiązane z przestrzenią nazw, aby jednoznacznie wskazywać pole Option w pojedynczym obiekcie za pomocą pełnej nazwy klasy tego obiektu lub wartości aliasu OptionClass oddzielonej dwukropkiem (:). Przykład:
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
Prosta krótka opcja to „-” z dodatkiem znaku opcji. Jeśli opcja wymaga argumentu (co dotyczy każdej opcji niebędącej typu boolean), może być zapisana jako osobny parametr, ale nie musi. Oznacza to, że zarówno „-f out.txt”, jak i „-fout.txt” są akceptowane.
Pojedynczym znakiem „-” można podać dowolną liczbę krótkich opcji, o ile wszystkie (z wyjątkiem opcji ostatniej) nie wymagają argumentów.
Długa opcja zaczyna się od ciągu „--”, po którym następuje kilka znaków. Jeśli opcja wymaga argumentu, może on być zapisany bezpośrednio po nazwie opcji, rozdzielony znakiem „=”, lub jako kolejny argument. (czyli „--file=out.txt” lub „--file out.txt”).
Długa opcja logiczna „––name” automatycznie dostaje towarzysza „––no-name”. Jeśli opcja to „--flag”, to „--flag”, „--no-flag”, „--flag=true” i „--flag=false” są prawidłowe, ale ani „--flag true”, ani „--flag false” nie są dozwolone (ponieważ „--flag” jest wystarczające, a następujące „true” lub „false” jest interpretowane osobno). Możesz użyć „tak” i „nie” jako synonimów „prawda” i „fałsz”.
Każdy ciąg znaków, który nie zaczyna się od „-” i nie jest wymaganym argumentem poprzedniej opcji, jest argumentem pozycyjnym niebędącym opcją, podobnie jak wszystkie kolejne ciągi znaków. Każdy ciąg znaków po „--” jest nieopcjonalnym argumentem pozycyjnym.
Pola odpowiadające opcjom są aktualizowane w miarę przetwarzania opcji. Pozostałe argumenty pozycyjne są zwracane jako lista<String>.
Oto prosty przykład:
// 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) {
...
}
...
}
- strona man getopt(1);
- Moduł „optparse” w Pythonie (http://docs.python.org/library/optparse.html)
- „Wytyczne dotyczące składni narzędzi” w standardzie POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02).
- „Standardy interfejsów wiersza poleceń” GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces).
Zobacz też:
Podsumowanie
Konstruktory publiczne | |
|---|---|
ArgsOptionParser(
Tworzy |
|
ArgsOptionParser(Object... optionSources)
Tworzy |
|
Metody publiczne | |
|---|---|
|
getInopOptions()
Zwraca zestaw opcji, które nie zmieniły żadnych wartości domyślnych. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
Wyprowadza tekst pomocy dla wszystkich pól |
|
parse(String... args)
Przetwarza argumenty wiersza poleceń „args”, ustawiając pola @Option obiektu „optionSource” przekazanego konstruktorowi. |
|
parse(
Alternatywna metoda |
|
parseBestEffort(
Alternatywna metoda |
|
parseBestEffort(
Alternatywna metoda |
|
parseBestEffort(String... args)
Wersja |
void
|
validateMandatoryOptions()
Sprawdzanie, czy wszystkie pola oznaczone jako wymagane zostały skonfigurowane. |
Konstruktory publiczne
ArgsOptionParser
public ArgsOptionParser (optionSources)
Tworzy ArgsOptionParser dla kolekcji obiektów.
| Parametry | |
|---|---|
optionSources |
: obiekty konfiguracji. |
| Rzuty | |
|---|---|
ConfigurationException |
jeśli obiekty konfiguracji są nieprawidłowo skonfigurowane. |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
Tworzy ArgsOptionParser dla co najmniej 1 obiektu.
| Parametry | |
|---|---|
optionSources |
Object: obiekty konfiguracji. |
| Rzuty | |
|---|---|
ConfigurationException |
jeśli obiekty konfiguracji są nieprawidłowo skonfigurowane. |
Metody publiczne
getInopOptions
publicgetInopOptions ()
Zwraca zestaw opcji, które nie zmieniły żadnych wartości domyślnych.
| Zwroty | |
|---|---|
|
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly,
Object optionObject)Wyprowadza tekst pomocy dla wszystkich pól Option w obiekcie optionObject.
Tekst pomocy dla każdej opcji będzie mieć następujący format:
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]
| Parametry | |
|---|---|
importantOnly |
boolean: jeśli true, wydrukuj tylko pomoc dotyczącą ważnych opcji |
optionObject |
Object: obiekt, dla którego ma być drukowany tekst pomocy |
| Zwroty | |
|---|---|
String |
ciąg tekstowy zawierający przyjazny dla użytkownika tekst pomocy dla wszystkich pól opcji; |
parsowanie
publicparse (String... args)
Przetwarza argumenty wiersza poleceń „args”, ustawiając pola @Option obiektu „optionSource” przekazanego konstruktorowi.
| Parametry | |
|---|---|
args |
String |
| Zwroty | |
|---|---|
|
ERROR(/List) argumentów pozycyjnych pozostałych po przetworzeniu wszystkich opcji. |
| Rzuty | |
|---|---|
ConfigurationException |
jeśli wystąpił błąd podczas przetwarzania argumentów. |
parsowanie
publicparse ( args)
Alternatywna metoda parse(String), która przyjmuje tablicę argumentówERROR(/List)
| Parametry | |
|---|---|
args |
|
| Zwroty | |
|---|---|
|
ERROR(/List) argumentów pozycyjnych pozostałych po przetworzeniu wszystkich opcji. |
| Rzuty | |
|---|---|
ConfigurationException |
jeśli wystąpił błąd podczas przetwarzania argumentów. |
parseBestEffort
publicparseBestEffort ( args)
Alternatywna metoda parseBestEffort(String), która przyjmuje tablicę argumentówERROR(/List)
| Parametry | |
|---|---|
args |
|
| Zwroty | |
|---|---|
|
ERROR(/List) z pozostałych argumentów |
parseBestEffort
publicparseBestEffort ( args, boolean forceContinue)
Alternatywna metoda parseBestEffort(String), która przyjmuje ERROR(/List) argumentów i może być wymuszona, aby kontynuować analizowanie do końca, nawet jeśli niektóre argumenty nie zostaną przeanalizowane.
| Parametry | |
|---|---|
args |
: lista zawierająca pozostałe argumenty. |
forceContinue |
boolean: wartość True, jeśli ma być kontynuowana analiza, nawet jeśli niektóre argumenty nie zostaną przeanalizowane. |
| Zwroty | |
|---|---|
|
ERROR(/List) z pozostałych argumentów |
parseBestEffort
publicparseBestEffort (String... args)
Wersja parse(String) z możliwie największą dokładnością. Jeśli zostanie rzucony wyjątek ConfigurationException, zostanie on przechwycony wewnętrznie, a pozostałe argumenty (w tym argument, który spowodował wyjątek) zostaną zwrócone. Ta metoda nie zgłasza wyjątku.
| Parametry | |
|---|---|
args |
String |
| Zwroty | |
|---|---|
|
ERROR(/List) z pozostałych argumentów |
validateMandatoryOptions
public void validateMandatoryOptions ()
Sprawdzanie, czy wszystkie pola oznaczone jako wymagane zostały skonfigurowane.
| Rzuty | |
|---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |
|