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 eingeordnetes 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. Options- und Kurznamen von Optionen müssen im Hinblick 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 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. Beispiel:

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

Eine einfache Kurzoption besteht aus einem Bindestrich gefolgt von einem Kurzoptionenzeichen. Wenn die Option ein Argument erfordert (was auf jede nicht boolesche Option zutrifft), kann sie als separater Parameter geschrieben werden, was aber nicht der Fall ist. Das heißt, sowohl „-f out.txt“ als auch „-fout.txt“ sind zulässig.

Es ist möglich, nach einem einzelnen „-“ mehrere kurze Optionen anzugeben, sofern für alle (außer möglicherweise die letzte) keine Argumente erforderlich sind.

Eine lange Option beginnt mit „--“, gefolgt von mehreren Zeichen. Wenn die Option ein Argument erfordert, kann sie direkt nach dem Optionsnamen, getrennt durch „=“, oder als nächstes Argument stehen. (d. h. „--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 „--“ ist ein Positionsargument ohne Optionen.

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 „Utility Syntax Guidelines“ (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)

Analysiert die Befehlszeilenargumente „args“ und legt die @Option-Felder von „optionSource“ fest, die für den Konstruktor bereitgestellt werden.

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 obligatorisch 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 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 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
Eine ERROR(/List) der Positionsargumente, die nach der Verarbeitung aller Optionen übrig bleiben.

Ausgabe
ConfigurationException if error occurred parsing the arguments.

parsen

public  parse ( args)

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

Parameter
args

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

Ausgabe
ConfigurationException if error occurred parsing the arguments.

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: „True“, 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
ein 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