ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Fügt Option-Felder aus geparsten Befehlszeilenargumenten ein.

Strings im übergebenen String[] werden von links nach rechts analysiert. 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 nicht als Option verwendetes Positionalargument klassifiziert.

Jedes Optionsargument muss einem oder mehreren Option-Feldern zugeordnet werden. Eine lange Option wird dem Option-Namen zugeordnet und eine kurze Option dem Kurznamen von Option. Jeder Optionsname und jeder Optionskurzname muss im Vergleich zu allen anderen Option-Feldern im selben Objekt 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 sich eindeutig auf ein Option-Feld innerhalb eines einzelnen Objekts zu beziehen. Dazu wird der vollständige Klassenname dieses Objekts oder sein OptionClass-Aliaswert durch einen Doppelpunkt getrennt.

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

Eine einfache Kurzoption besteht aus einem Bindestrich gefolgt von einem Kurzoptionenzeichen. Wenn für die Option ein Argument erforderlich ist (was für alle nicht booleschen Optionen zutrifft), kann es als separater Parameter geschrieben werden, muss es aber nicht. Das heißt, sowohl „-f out.txt“ als auch „-fout.txt“ sind zulässig.

Es ist möglich, nach einem einzelnen Bindestrich mehrere kurze Optionen anzugeben, sofern für alle Optionen (außer möglicherweise der letzten) keine Argumente erforderlich sind.

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

Für eine boolesche Langoption wie „–name“ wird automatisch die Option „–no-name“ hinzugefügt. Wenn eine Option „--flag“ lautet, sind „--flag“, „--no-flag“, „--flag=true“ und „--flag=false“ gültig. „--flag true“ und „--flag false“ sind jedoch nicht zulässig, da „--flag“ allein ausreicht und das nachfolgende „true“ oder „false“ separat interpretiert wird. Sie können „ja“ und „nein“ als Synonyme für „wahr“ und „falsch“ verwenden.

Jeder String, der nicht mit einem Bindestrich beginnt und kein obligatorisches Argument einer vorherigen Option ist, ist ein nicht optionelles Positionalargument, ebenso wie alle nachfolgenden Strings. Jeder String nach einem „--“ ist ein nicht optionelles Positionalargument.

Die Felder, die den Optionen entsprechen, werden aktualisiert, während die Optionen verarbeitet werden. Alle verbleibenden Positionalparameter 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:
  • in der Manpage zu getopt(1)
  • Python-Modul „optparse“ (http://docs.python.org/library/optparse.html)
  • die POSIX-Richtlinien für die Syntax von Dienstprogrammen (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( optionSources)

Erstellt eine ArgsOptionParser für eine Sammlung von Objekten.

ArgsOptionParser(Object... optionSources)

Erstellt eine ArgsOptionParser für ein oder mehrere Objekte.

Öffentliche Methoden

getInopOptions()

Gibt die Optionen zurück, bei denen keine Standardwerte geändert wurden.

static String getOptionHelp(boolean importantOnly, Object optionObject)

Hilfetext für alle Option-Felder in optionObject ausgeben.

parse(String... args)

Hier werden die Befehlszeilenargumente „args“ geparst und die @Option-Felder der „optionSource“ festgelegt, die dem Konstruktor übergeben wurden.

parse( args)

Alternative parse(String)-Methode, die eine ERROR(/List) von Argumenten annimmt

parseBestEffort( args)

Alternative parseBestEffort(String)-Methode, die eine ERROR(/List) von Argumenten annimmt

parseBestEffort( args, boolean forceContinue)

Alternative parseBestEffort(String)-Methode, die eine ERROR(/List) von Argumenten annimmt und gezwungen werden kann, bis zum Ende zu parsen, auch wenn einige Argumente nicht geparst werden.

parseBestEffort(String... args)

Eine Best-Effort-Version von parse(String).

void validateMandatoryOptions()

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

Öffentliche Konstruktoren

ArgsOptionParser

public ArgsOptionParser ( optionSources)

Erstellt eine ArgsOptionParser für eine Sammlung von Objekten.

Parameter
optionSources : die Konfigurationsobjekte.

Ausgabe
ConfigurationException wenn Konfigurationsobjekte nicht ordnungsgemäß konfiguriert sind.

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

Erstellt eine ArgsOptionParser für ein oder mehrere Objekte.

Parameter
optionSources Object: die Konfigurationsobjekte.

Ausgabe
ConfigurationException wenn Konfigurationsobjekte nicht ordnungsgemäß konfiguriert sind.

Öffentliche Methoden

getInopOptions

public  getInopOptions ()

Gibt die Optionen zurück, bei denen keine Standardwerte geändert wurden.

Returns

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Hilfetext für alle Option-Felder in optionObject ausgeben.

Der Hilfetext für jede Option hat folgendes Format:

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

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

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

Returns
String Ein String mit nutzerfreundlichem Hilfetext für alle Optionsfelder

parse

public  parse (String... args)

Hier werden die Befehlszeilenargumente „args“ geparst und die @Option-Felder der „optionSource“ festgelegt, die dem Konstruktor übergeben wurden.

Parameter
args String

Returns
ein ERROR(/List) der Positionsargumente, die nach der Verarbeitung aller Optionen übrig bleiben.

Ausgabe
ConfigurationException wird ausgegeben, wenn beim Parsen der Argumente ein Fehler auftritt.

parse

public  parse ( args)

Alternative parse(String)-Methode, die eine ERROR(/List) von Argumenten annimmt

Parameter
args

Returns
ein ERROR(/List) der Positionsargumente, die nach der Verarbeitung aller Optionen übrig bleiben.

Ausgabe
ConfigurationException wird ausgegeben, wenn beim Parsen der Argumente ein Fehler auftritt.

parseBestEffort

public  parseBestEffort ( args)

Alternative parseBestEffort(String)-Methode, die eine ERROR(/List) von Argumenten annimmt

Parameter
args

Returns
ERROR(/List) der verbleibenden Argumente

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Alternative parseBestEffort(String)-Methode, die eine ERROR(/List) von Argumenten annimmt und gezwungen werden kann, bis zum Ende zu parsen, auch wenn einige Argumente nicht geparst werden.

Parameter
args : Liste mit den verbleibenden Argumenten.

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

Returns
ERROR(/List) der verbleibenden Argumente

parseBestEffort

public  parseBestEffort (String... args)

Eine Best-Effort-Version von parse(String). Wenn eine ConfigurationException auftritt, wird diese Ausnahme intern erfasst und die verbleibenden Argumente (einschließlich des Arguments, das zur Ausnahme geführt hat) werden zurückgegeben. Diese Methode wirft keine Fehler.

Parameter
args String

Returns
ERROR(/List) der verbleibenden Argumente

validateMandatoryOptions

public void validateMandatoryOptions ()

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

Ausgabe
com.android.tradefed.config.ConfigurationException
ConfigurationException