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

 }

 
Zobacz też:
  • 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( optionSources)

Tworzy ArgsOptionParser dla kolekcji obiektów.

ArgsOptionParser(Object... optionSources)

Tworzy ArgsOptionParser dla co najmniej 1 obiektu.

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 Option w obiekcie optionObject.

parse(String... args)

Przetwarza argumenty wiersza poleceń „args”, ustawiając pola @Option obiektu „optionSource” przekazanego konstruktorowi.

parse( args)

Alternatywna metoda parse(String), która przyjmuje tablicę argumentówERROR(/List)

parseBestEffort( args)

Alternatywna metoda parseBestEffort(String), która przyjmuje tablicę argumentówERROR(/List)

parseBestEffort( 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.

parseBestEffort(String... args)

Wersja parse(String) z możliwie największą dokładnością.

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

public  getInopOptions ()

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

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

public  parse (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

public  parse ( 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

public  parseBestEffort ( args)

Alternatywna metoda parseBestEffort(String), która przyjmuje tablicę argumentówERROR(/List)

Parametry
args

Zwroty
ERROR(/List) z pozostałych argumentów

parseBestEffort

public  parseBestEffort ( 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

public  parseBestEffort (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