ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Renseigne les champs Option à partir des arguments de ligne de commande analysés.

Les chaînes de la String[] transmise sont analysées de gauche à droite. Chaque chaîne est classée comme une option courte (telle que "-v"), une option longue (telle que "--verbose"), un argument vers une option (telle que "out.txt" dans "-f out.txt") ou un argument positionnel sans option.

Chaque argument d'option doit être mappé sur un ou plusieurs champs Option. Une option longue est mappée sur le nom Option, et une option courte est mappée sur le nom abrégé Option. Chaque nom et nom court d'option doivent être uniques par rapport à tous les autres champs Option du même objet.

Un seul argument d'option peut être mappé sur plusieurs champs Option portant le même nom dans plusieurs objets. Les arguments Option peuvent être associés à un espace de noms pour faire référence de manière unique à un champ Option dans un seul objet à l'aide du nom de classe complet de cet objet ou de sa valeur d'alias OptionClass séparée par :, par exemple :

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

Une option courte simple se présente sous la forme d'un "-" suivi d'un caractère d'option courte. Si l'option nécessite un argument (ce qui est vrai pour toute option non booléenne), elle peut être écrite en tant que paramètre distinct, mais ce n'est pas obligatoire. En d'autres termes, les fichiers "-f out.txt" et "-fout.txt" sont tous les deux acceptables.

Vous pouvez spécifier plusieurs options courtes après un seul "-", à condition que toutes (sauf peut-être la dernière) ne nécessitent pas d'arguments.

Une option longue commence par "--", suivi de plusieurs caractères. Si l'option nécessite un argument, il peut être écrit directement après le nom de l'option, séparé par "=", ou comme argument suivant. (c'est-à-dire "--file=out.txt" ou "--file out.txt").

Une option longue booléenne "--name" reçoit automatiquement un compagnon "--no-name". Étant donné une option "--flag", les options "--flag", "--no-flag", "--flag=true" et "--flag=false" sont toutes valides, bien que ni "--flag true" ni "--flag false" ne soient autorisés (puisque "--flag" seul est suffisant, le "true" ou "false" suivant est interprété séparément). Vous pouvez utiliser "yes" et "no" comme synonymes de "true" et "false".

Chaque chaîne qui ne commence pas par "-" et qui n'est pas un argument requis d'une option précédente est un argument positionnel sans option, comme toutes les chaînes successives. Chaque chaîne après un "--" est un argument de position non optionnel.

Les champs correspondant aux options sont mis à jour à mesure que leurs options sont traitées. Les arguments de position restants sont renvoyés sous forme de List<String>.

Voici un exemple simple:

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

 }

 
Voir également:

  • la page de manuel getopt(1)
  • Module "optparse" de Python (http://docs.python.org/library/optparse.html)
  • les "consignes de syntaxe d'utilitaire" POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • les "Normes pour les interfaces de ligne de commande" GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Voir aussi :

Résumé

Constructeurs publics

ArgsOptionParser( optionSources)

Crée un ArgsOptionParser pour un ensemble d'objets.

ArgsOptionParser(Object... optionSources)

Crée un ArgsOptionParser pour un ou plusieurs objets.

Méthodes publiques

getInopOptions()

Renvoie l'ensemble des options pour lesquelles aucune valeur par défaut n'a été modifiée.

static String getOptionHelp(boolean importantOnly, Object optionObject)

Affiche le texte d'aide pour tous les champs Option dans optionObject.

parse(String... args)

Analyse les arguments de ligne de commande "args", en définissant les champs @Option de l'objet "optionSource" fourni au constructeur.

parse( args)

Méthode parse(String) alternative qui accepte un ERROR(/List) d'arguments

parseBestEffort( args)

Méthode parseBestEffort(String) alternative qui accepte un ERROR(/List) d'arguments

parseBestEffort( args, boolean forceContinue)

Méthode parseBestEffort(String) alternative qui prend un ERROR(/List) d'arguments et peut être forcée à continuer l'analyse jusqu'à la fin, même si certains arguments ne sont pas analysés.

parseBestEffort(String... args)

Version optimale de parse(String).

void validateMandatoryOptions()

Vérifie que tous les champs marqués comme obligatoires ont été définis.

Constructeurs publics

ArgsOptionParser

public ArgsOptionParser ( optionSources)

Crée un ArgsOptionParser pour un ensemble d'objets.

Paramètres
optionSources : objets de configuration.

Génère
ConfigurationException si les objets de configuration sont mal configurés.

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

Crée un ArgsOptionParser pour un ou plusieurs objets.

Paramètres
optionSources Object: objets de configuration.

Génère
ConfigurationException si les objets de configuration ne sont pas configurés correctement.

Méthodes publiques

getInopOptions

public  getInopOptions ()

Renvoie l'ensemble des options pour lesquelles aucune valeur par défaut n'a été modifiée.

Renvoie

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Affiche le texte d'aide pour tous les champs Option dans optionObject.

Le texte d'aide de chaque option se présente sous le format suivant :

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
Le texte "Par défaut…" est omis si le champ d'option est nul ou vide.

Paramètres
importantOnly boolean: si true n'affiche l'aide que pour les options importantes

optionObject Object: objet pour lequel imprimer le texte d'aide

Renvoie
String Chaîne contenant un texte d'aide convivial pour tous les champs d'option

analyser

public  parse (String... args)

Analyse les arguments de ligne de commande "args", en définissant les champs @Option de l'objet "optionSource" fourni au constructeur.

Paramètres
args String

Renvoie
un ERROR(/List) des arguments positionnels restants après le traitement de toutes les options.

Génère
ConfigurationException en cas d'erreur lors de l'analyse des arguments.

analyser

public  parse ( args)

Méthode parse(String) alternative qui accepte un ERROR(/List) d'arguments

Paramètres
args

Renvoie
une ERROR(/List) des arguments positionnels restants après le traitement de toutes les options.

Génère
ConfigurationException en cas d'erreur lors de l'analyse des arguments.

parseBestEffort

public  parseBestEffort ( args)

Méthode parseBestEffort(String) alternative qui accepte un ERROR(/List) d'arguments

Paramètres
args

Renvoie
ERROR(/List) de gauche sur les arguments

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Méthode parseBestEffort(String) alternative qui prend un ERROR(/List) d'arguments et peut être forcée à continuer l'analyse jusqu'à la fin, même si certains arguments ne sont pas analysés.

Paramètres
args : liste contenant les arguments restants.

forceContinue boolean : "True" si l'analyse doit continuer, même si certains arguments ne sont pas analysés.

Renvoie
une ERROR(/List) des arguments de gauche

parseBestEffort

public  parseBestEffort (String... args)

Version optimale de parse(String). Si une exception ConfigurationException est générée, cette exception est capturée en interne, et les arguments restants (y compris l'argument à l'origine de l'exception) sont renvoyés. Cette méthode ne génère pas d'exception.

Paramètres
args String

Renvoie
ERROR(/List) de gauche sur les arguments

validateMandatoryOptions

public void validateMandatoryOptions ()

Vérifie que tous les champs marqués comme obligatoires ont été définis.

Génère
com.android.tradefed.config.ConfigurationException
ConfigurationException