ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Object
   ↳ com.android.tradefed.config.OptionSetter
     ↳ com.android.tradefed.config.ArgsOptionParser


Füllt Option-Felder mit geparsten Befehlszeilenargumenten.

Strings im übergebenen String[] werden von links nach rechts geparst. Jeder String wird als kurze Option (z. B. „-v“), lange Option (z. B. „--verbose“), Argument für eine Option (z. B. „out.txt“ in „-f out.txt“) oder als nicht optionale Positionsparameter klassifiziert.

Jedes Optionsargument muss einem oder mehreren Option-Feldern zugeordnet werden. Eine lange Option wird dem Namen Option und eine kurze Option dem Kurznamen Option zugeordnet. Jeder Optionsname und jeder Optionskurzname muss in Bezug auf alle anderen Option-Felder innerhalb desselben Objekts eindeutig sein.

Ein einzelnes Optionsargument kann mehreren Option-Feldern mit demselben Namen in mehreren Objekten zugeordnet werden. Option-Argumente können mit einem Namespace versehen werden, um eindeutig auf ein Option-Feld innerhalb eines einzelnen Objekts zu verweisen. Dazu wird der vollständige Klassenname des Objekts oder sein OptionClass-Aliaswert verwendet, getrennt durch „:“, z. B.

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

Eine einfache Kurzoption besteht aus einem „-“, gefolgt von einem Zeichen für die Kurzoption. Wenn für die Option ein Argument erforderlich ist (was bei allen nicht booleschen Optionen der Fall ist), kann sie als separater Parameter geschrieben werden, muss es aber nicht. Sowohl „-f out.txt“ als auch „-fout.txt“ sind zulässig.

Es ist möglich, mehrere kurze Optionen nach einem einzelnen „-“ anzugeben, sofern alle (mit Ausnahme des letzten) keine Argumente erfordern.

Eine lange Option beginnt mit „--“, gefolgt von mehreren Zeichen. Wenn für die Option ein Argument erforderlich ist, kann es direkt nach dem Optionsnamen, getrennt durch „=“, oder als nächstes Argument angegeben werden. Das heißt, „--file=out.txt“ oder „--file out.txt“.

Für die boolesche Langoption „--name“ wird automatisch eine Option „--no-name“ erstellt. Bei der Option „--flag“ sind „--flag“, „--no-flag“, „--flag=true“ und „--flag=false“ alle gültig. „--flag true“ und „--flag false“ sind jedoch nicht zulässig, da „--flag“ allein ausreicht und das folgende „true“ oder „false“ separat interpretiert wird. Sie können „yes“ und „no“ als Synonyme für „true“ und „false“ verwenden.

Jeder String, der nicht mit „-“ beginnt und kein erforderliches Argument einer vorherigen Option ist, ist ein nicht optionales Positionsargument, ebenso wie alle nachfolgenden Strings. Jeder String nach „--“ ist ein nicht optionales Positionsargument.

Die Felder, die den Optionen entsprechen, werden aktualisiert, wenn die Optionen verarbeitet werden. Alle verbleibenden Positionsargumente werden als List<String> zurückgegeben.

Hier ein einfaches Beispiel:

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

 }

 
Weitere Informationen:
  • die Manpage zu getopt(1)
  • Das „optparse“-Modul von Python (http://docs.python.org/library/optparse.html)
  • die POSIX-Richtlinien für die Utility-Syntax (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • die GNU-Standards für Befehlszeilenschnittstellen (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Weitere Informationen

Zusammenfassung

Öffentliche Konstruktoren

ArgsOptionParser(Object... optionSources)

Erstellt ein ArgsOptionParser für ein oder mehrere Objekte.

ArgsOptionParser(Collection<Object> optionSources)

Erstellt ein ArgsOptionParser für eine Sammlung von Objekten.

Öffentliche Methoden

Set<String> getInopOptions()

Gibt die Gruppe von Optionen zurück, mit denen keine Standardwerte geändert wurden.

static String getOptionHelp(boolean importantOnly, Object optionObject)

Gibt Hilfetext für alle Option-Felder in optionObject aus.

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

Alternative ERROR(/#parse(String. args))-Methode, die ein List von Argumenten akzeptiert

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

Parst die Befehlszeilenargumente „args“ und legt die @Option-Felder der „optionSource“ fest, die dem Konstruktor bereitgestellt werden.

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

Alternative ERROR(/#parseBestEffort(String. args))-Methode, die ein List von Argumenten akzeptiert

List<String> parseBestEffort(List<String> args, boolean forceContinue)

Alternative ERROR(/#parseBestEffort(String. args))-Methode, die ein List von Argumenten akzeptiert und das Parsen bis zum Ende erzwingen kann, auch wenn einige Argumente nicht geparst werden.

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

Eine Best-Effort-Version von ERROR(/#parse(String. args)).

void validateMandatoryOptions()

Prüft, ob alle als Pflichtfelder gekennzeichneten Felder festgelegt wurden.

Öffentliche Konstruktoren

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

Erstellt ein ArgsOptionParser für ein oder mehrere Objekte.

Parameter
optionSources Object: die Konfigurationsobjekte.

Löst aus
ConfigurationException wenn Konfigurationsobjekte nicht richtig konfiguriert sind.

ArgsOptionParser

public ArgsOptionParser (Collection<Object> optionSources)

Erstellt ein ArgsOptionParser für eine Sammlung von Objekten.

Parameter
optionSources Collection: die Konfigurationsobjekte.

Löst aus
ConfigurationException wenn Konfigurationsobjekte nicht richtig konfiguriert sind.

Öffentliche Methoden

getInopOptions

public Set<String> getInopOptions ()

Gibt die Gruppe von Optionen zurück, mit denen keine Standardwerte geändert wurden.

Gibt Folgendes zurück:
Set<String>

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Gibt Hilfetext für alle Option-Felder in optionObject aus.

Der Hilfetext für jede Option hat das folgende Format:

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
Der Text „Standard…“ wird weggelassen, wenn das Optionsfeld null oder leer ist.

Parameter
importantOnly boolean: Wenn true, wird nur Hilfe für die wichtigen Optionen ausgegeben.

optionObject Object: das Objekt, für das Hilfetext ausgegeben werden soll

Gibt Folgendes zurück:
String Ein String mit benutzerfreundlichem Hilfetext für alle Optionsfelder

parse

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

Alternative ERROR(/#parse(String. args))-Methode, die ein List von Argumenten akzeptiert

Parameter
args List

Gibt Folgendes zurück:
List<String> ein List der Positionsargumente, die nach der Verarbeitung aller Optionen übrig bleiben.

Löst aus
ConfigurationException wenn beim Parsen der Argumente ein Fehler aufgetreten ist.

parse

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

Parst die Befehlszeilenargumente „args“ und legt die @Option-Felder der „optionSource“ fest, die dem Konstruktor bereitgestellt werden.

Parameter
args String

Gibt Folgendes zurück:
List<String> ein List der Positionsargumente, die nach der Verarbeitung aller Optionen übrig bleiben.

Löst aus
ConfigurationException wenn beim Parsen der Argumente ein Fehler aufgetreten ist.

parseBestEffort

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

Alternative ERROR(/#parseBestEffort(String. args))-Methode, die ein List von Argumenten akzeptiert

Parameter
args List

Gibt Folgendes zurück:
List<String> List der verbleibenden Argumente

parseBestEffort

public List<String> parseBestEffort (List<String> args, 
                boolean forceContinue)

Alternative ERROR(/#parseBestEffort(String. args))-Methode, die ein List von Argumenten akzeptiert und das Parsen bis zum Ende erzwingen kann, auch wenn einige Argumente nicht geparst werden.

Parameter
args List: Liste, die die verbleibenden Argumente enthält.

forceContinue boolean: „True“, wenn das Parsen auch dann fortgesetzt werden soll, wenn einige Argumente nicht geparst werden.

Gibt Folgendes zurück:
List<String> List der verbleibenden Argumente

parseBestEffort

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

Eine Best-Effort-Version von ERROR(/#parse(String. args)). Wenn eine ConfigurationException ausgelöst wird, wird diese Ausnahme intern abgefangen und die verbleibenden Argumente (einschließlich des Arguments, das die Ausnahme ausgelöst hat) werden zurückgegeben. Diese Methode löst keine Ausnahme aus.

Parameter
args String

Gibt Folgendes zurück:
List<String> List der verbleibenden Argumente

validateMandatoryOptions

public void validateMandatoryOptions ()

Prüft, ob alle als Pflichtfelder gekennzeichneten Felder festgelegt wurden.

Löst aus
com.android.tradefed.config.ConfigurationException
ConfigurationException