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 elemencie String[] są analizowane od lewej do prawej. Każdy ciąg znaków 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, który nie jest opcją.
Każdy argument opcji musi być mapowany na co najmniej 1 pole Option. Długa opcja jest mapowana na Option name, a krótka opcja na Option krótka nazwa. Każda nazwa opcji i krótka nazwa opcji musi być unikalna w stosunku do wszystkich innych pól Option w ramach tego samego obiektu.
Jeden argument opcji może być mapowany na wiele pól Option o tej samej nazwie w różnych obiektach. Argumenty Option mogą mieć przestrzeń nazw, aby jednoznacznie odwoływać się do Option pola w ramach jednego obiektu za pomocą pełnej nazwy klasy tego obiektu lub jego OptionClass wartości aliasu rozdzielonej znakiem „:”.
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
Prosta krótka opcja to „-” i znak krótkiej opcji. Jeśli opcja wymaga argumentu (co dotyczy każdej opcji, która nie jest wartością logiczną), można ją zapisać jako osobny parametr, ale nie jest to konieczne. Oznacza to, że zarówno „-f out.txt”, jak i „-fout.txt” są akceptowalne.
Po pojedynczym znaku „-” można podać kilka krótkich opcji, o ile wszystkie (z wyjątkiem być może ostatniej) nie wymagają argumentów.
Długa opcja zaczyna się od „--”, po którym następuje kilka znaków. Jeśli opcja wymaga argumentu, można go wpisać bezpośrednio po nazwie opcji, oddzielając go znakiem „=”, lub jako następny argument. (Czyli „--file=out.txt” lub „--file out.txt”).
Długa opcja logiczna „--name” automatycznie otrzymuje opcję towarzyszącą „--no-name”. Jeśli opcja to „--flag”, to „--flag”, „--no-flag”, „--flag=true” i „--flag=false” są prawidłowe, ale „--flag true” ani „--flag false” nie są dozwolone (ponieważ samo „--flag” jest wystarczające, a następujące po nim „true” lub „false” jest interpretowane oddzielnie). Słów „yes” i „no” możesz używać jako synonimów słów „true” i „false”.
Każdy ciąg znaków, który nie zaczyna się od „-” i nie jest wymaganym argumentem poprzedniej opcji, jest argumentem pozycyjnym, który nie jest opcją, podobnie jak wszystkie kolejne ciągi znaków. Każdy ciąg znaków po „--” jest argumentem pozycyjnym, który nie jest opcją.
Pola odpowiadające opcjom są aktualizowane w miarę przetwarzania opcji. Wszystkie pozostałe argumenty pozycyjne są zwracane jako List<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) {
...
}
...
}
- strony man getopt(1)
- Moduł „optparse” w Pythonie (http://docs.python.org/library/optparse.html)
- „Wytyczne dotyczące składni narzędzi” POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02);
- standardy GNU dotyczące interfejsów wiersza poleceń (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces);
Zobacz też:
Podsumowanie
Konstruktory publiczne | |
|---|---|
ArgsOptionParser(Object... optionSources)
Tworzy |
|
ArgsOptionParser(Collection<Object> optionSources)
Tworzy |
|
Metody publiczne | |
|---|---|
Set<String>
|
getInopOptions()
Zwraca zbiór opcji, które nie zmieniły żadnych wartości domyślnych. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
Tekst pomocy do wszystkich pól |
List<String>
|
parse(List<String> args)
Alternatywna metoda |
List<String>
|
parse(String... args)
Analizuje argumenty wiersza poleceń „args”, ustawiając pola @Option obiektu „optionSource” przekazanego do konstruktora. |
List<String>
|
parseBestEffort(List<String> args)
Alternatywna metoda |
List<String>
|
parseBestEffort(List<String> args, boolean forceContinue)
Alternatywna metoda |
List<String>
|
parseBestEffort(String... args)
Wersja |
void
|
validateMandatoryOptions()
Sprawdza, czy wszystkie pola oznaczone jako obowiązkowe zostały ustawione. |
Konstruktory publiczne
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
Tworzy ArgsOptionParser dla co najmniej 1 obiektu.
| Parametry | |
|---|---|
optionSources |
Object: obiekty konfiguracyjne. |
| Zgłasza | |
|---|---|
ConfigurationException |
jeśli obiekty konfiguracyjne są nieprawidłowo skonfigurowane. |
ArgsOptionParser
public ArgsOptionParser (Collection<Object> optionSources)
Tworzy ArgsOptionParser dla kolekcji obiektów.
| Parametry | |
|---|---|
optionSources |
Collection: obiekty konfiguracyjne. |
| Zgłasza | |
|---|---|
ConfigurationException |
jeśli obiekty konfiguracyjne są nieprawidłowo skonfigurowane. |
Metody publiczne
getInopOptions
public Set<String> getInopOptions ()
Zwraca zbiór opcji, które nie zmieniły żadnych wartości domyślnych.
| Zwraca | |
|---|---|
Set<String> |
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly,
Object optionObject)Tekst pomocy do wszystkich pól Option w optionObject.
Tekst pomocy dla każdej opcji będzie miał ten 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 zostać wyświetlony tekst pomocy. |
| Zwraca | |
|---|---|
String |
ciąg znaków zawierający przyjazny dla użytkownika tekst pomocy dotyczący wszystkich pól opcji. |
analizowa
public List<String> parse (List<String> args)
Alternatywna metoda ERROR(/#parse(String. args)), która przyjmuje List argumentów
| Parametry | |
|---|---|
args |
List |
| Zwraca | |
|---|---|
List<String> |
List argumentów pozycyjnych pozostałych po przetworzeniu wszystkich opcji. |
| Zgłasza | |
|---|---|
ConfigurationException |
jeśli podczas przetwarzania argumentów wystąpił błąd. |
analizowa
public List<String> parse (String... args)
Analizuje argumenty wiersza poleceń „args”, ustawiając pola @Option obiektu „optionSource” przekazanego do konstruktora.
| Parametry | |
|---|---|
args |
String |
| Zwraca | |
|---|---|
List<String> |
List argumentów pozycyjnych pozostałych po przetworzeniu wszystkich opcji. |
| Zgłasza | |
|---|---|
ConfigurationException |
jeśli podczas przetwarzania argumentów wystąpił błąd. |
parseBestEffort
public List<String> parseBestEffort (List<String> args)
Alternatywna metoda ERROR(/#parseBestEffort(String. args)), która przyjmuje List argumentów
| Parametry | |
|---|---|
args |
List |
| Zwraca | |
|---|---|
List<String> |
List z pozostałych argumentów. |
parseBestEffort
public List<String> parseBestEffort (List<String> args,
boolean forceContinue)Alternatywna metoda ERROR(/#parseBestEffort(String. args)), która przyjmuje List argumentów i może być zmuszona do kontynuowania analizowania do końca, nawet jeśli niektóre argumenty nie zostaną przeanalizowane.
| Parametry | |
|---|---|
args |
List: lista, która będzie zawierać pozostałe argumenty. |
forceContinue |
boolean: wartość „true”, jeśli analiza ma być kontynuowana nawet wtedy, gdy nie można przeanalizować niektórych argumentów. |
| Zwraca | |
|---|---|
List<String> |
List z pozostałych argumentów. |
parseBestEffort
public List<String> parseBestEffort (String... args)
Wersja ERROR(/#parse(String. args)) z możliwie najlepszą obsługą. Jeśli zostanie zgłoszony wyjątek ConfigurationException, zostanie on przechwycony wewnętrznie, a pozostałe argumenty (w tym argument, który spowodował zgłoszenie wyjątku) zostaną zwrócone. Ta metoda nie zgłasza wyjątku.
| Parametry | |
|---|---|
args |
String |
| Zwraca | |
|---|---|
List<String> |
List z pozostałych argumentów. |
validateMandatoryOptions
public void validateMandatoryOptions ()
Sprawdza, czy wszystkie pola oznaczone jako obowiązkowe zostały ustawione.
| Zgłasza | |
|---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |
|