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 opcja krótka (np. „-v”), opcja długa (np. „--verbose”), argument opcji (np. „out.txt” w „-f out.txt”) lub argument pozycji 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 opcja 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.

Jeden argument opcji może zostać zmapowany na wiele pól Option o tej samej nazwie w wielu obiektach. Argumenty Option można stosować w przestrzeni nazw, aby jednoznacznie odwołać się do pola Option w pojedynczym obiekcie przy użyciu pełnej nazwy klasy tego obiektu lub jego wartości aliasu OptionClass rozdzielonej znakiem „:”. np.

 --classname:optionname optionvalue or
 --optionclassalias:optionname optionvalue.
 
.

Prosta krótka opcja to znak „-”, po którym następuje krótki znak opcji. Jeśli opcja wymaga argumentu (co dotyczy każdej opcji niebędącej typu boolean), może on być zapisany jako osobny parametr, ale nie musi. Oznacza to, że dozwolone są zarówno „-f out.txt”, jak i „-fout.txt”.

Po jednym znaku „-” możesz podać wiele opcji krótkich, o ile wszystkie nie wymagają argumentów (chyba że wszystkie).

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 po przetworzeniu 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)

Wyjściowy tekst pomocy dla wszystkich pól Option w 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 ERROR(/List) argumentów

parseBestEffort( args)

Alternatywna metoda parseBestEffort(String), która przyjmuje tablicę argumentów ERROR(/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 config są nieprawidłowo skonfigurowane.

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

Tworzy ArgsOptionParser dla co najmniej jednego 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 miał następujący format:

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
Tekst „Domyślnie…” zostanie pominięty, jeśli pole opcji jest puste lub nieokreślone.

Parametry
importantOnly boolean: jeśli true, wydrukuj tylko pomoc dotyczącą ważnych opcji

optionObject Object: obiekt, dla którego zostanie wyświetlony 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 if error occurred parsing the arguments.

parsowanie

public  parse ( args)

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

Parametry
args

Zwroty
ERROR(/List) argumentów pozycyjnych pozostałych po przetworzeniu wszystkich opcji.

Rzuty
ConfigurationException if error occurred parsing the arguments.

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

Analizuj Najlepszy Wysiłek

public  parseBestEffort ( args, 
                boolean forceContinue)

Alternatywna metoda parseBestEffort(String), która przyjmuje ERROR(/List) argumentów i może być wymuszona dalszym analizowaniem do końca, nawet jeśli niektóre argumenty nie są analizowane.

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

sprawdzenieMandatoryOpcje

public void validateMandatoryOptions ()

Sprawdzanie, czy wszystkie pola oznaczone jako wymagane zostały skonfigurowane.

Rzuty
com.android.tradefed.config.ConfigurationException
ConfigurationException