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) {
        ...
     }
     ...

 }

 
Zobacz też:
  • 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 dla co najmniej 1 obiektu.

ArgsOptionParser(Collection<Object> optionSources)

Tworzy ArgsOptionParser dla kolekcji obiektów.

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 OptionoptionObject.

List<String> parse(List<String> args)

Alternatywna metoda ERROR(/#parse(String. args)), która przyjmuje List argumentów

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 ERROR(/#parseBestEffort(String. args)), która przyjmuje List argumentów

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.

List<String> parseBestEffort(String... args)

Wersja ERROR(/#parse(String. args)) z możliwie najlepszą obsługą.

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 OptionoptionObject.

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]
 
Tekst „Domyślne…” zostanie pominięty, jeśli pole opcji ma wartość null lub jest puste.

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