ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


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

Les chaînes de String[] transmises sont analysées de gauche à droite. Chaque chaîne est classée comme option courte (par exemple, "-v"), option longue (par exemple, "--verbose"), argument d'une option (par exemple, "out.txt" dans "-f out.txt") ou argument positionnel sans option.

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

Un seul argument d'option peut être mappé à 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és par ":". Par exemple :

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

Une option courte simple est un "-" suivi d'un caractère d'option courte. Si l'option nécessite un argument (ce qui est le cas 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, "-f out.txt" et "-fout.txt" sont tous deux acceptables.

Il est possible de spécifier plusieurs options courtes après un seul "-", à condition que toutes (sauf éventuellement 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" est automatiquement associée à une option "--no-name". Étant donné une option "--flag", "--flag", "--no-flag", "--flag=true" et "--flag=false" sont toutes valides, mais "--flag true" et "--flag false" ne sont pas autorisées (car "--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 ne commençant pas par "-" et n'étant pas un argument requis d'une option précédente est un argument positionnel non optionnel, tout comme toutes les chaînes successives. Chaque chaîne après "--" est un argument positionnel non optionnel.

Les champs correspondant aux options sont mis à jour à mesure que les options sont traitées. Tous les arguments positionnels 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 aussi :
  • la page de manuel getopt(1)
  • Module "optparse" de Python (http://docs.python.org/library/optparse.html)
  • les "Directives de syntaxe des utilitaires" POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • les "Normes pour les interfaces de ligne de commande" de GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Voir aussi :

Résumé

Constructeurs publics

ArgsOptionParser(Object... optionSources)

Crée un ArgsOptionParser pour un ou plusieurs objets.

ArgsOptionParser(Collection<Object> optionSources)

Crée un ArgsOptionParser pour une collection d'objets.

Méthodes publiques

Set<String> getInopOptions()

Renvoie l'ensemble des options qui n'ont pas modifié les valeurs par défaut.

static String getOptionHelp(boolean importantOnly, Object optionObject)

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

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

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

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

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

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

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

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

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

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

Version optimisée de ERROR(/#parse(String. args)).

void validateMandatoryOptions()

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

Constructeurs publics

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 sont mal configurés.

ArgsOptionParser

public ArgsOptionParser (Collection<Object> optionSources)

Crée un ArgsOptionParser pour une collection d'objets.

Paramètres
optionSources Collection : objets de configuration.

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

Méthodes publiques

getInopOptions

public Set<String> getInopOptions ()

Renvoie l'ensemble des options qui n'ont pas modifié les valeurs par défaut.

Renvoie
Set<String>

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 sera au format suivant :

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

Paramètres
importantOnly boolean : si la valeur est true, n'affiche l'aide que pour les options importantes.

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

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

parse

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

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

Paramètres
args List

Renvoie
List<String> List des arguments positionnels restants après le traitement de toutes les options.

Génère
ConfigurationException si une erreur s'est produite lors de l'analyse des arguments.

parse

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

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

Paramètres
args String

Renvoie
List<String> List des arguments positionnels restants après le traitement de toutes les options.

Génère
ConfigurationException si une erreur s'est produite lors de l'analyse des arguments.

parseBestEffort

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

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

Paramètres
args List

Renvoie
List<String> List des arguments restants

parseBestEffort

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

Méthode ERROR(/#parseBestEffort(String. args)) alternative qui accepte un 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 List : liste qui contiendra les arguments restants.

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

Renvoie
List<String> List des arguments restants

parseBestEffort

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

Version optimisée de ERROR(/#parse(String. args)). Si une exception ConfigurationException est générée, elle est capturée en interne et les arguments restants (y compris l'argument qui a provoqué la génération de l'exception) sont renvoyés. Cette méthode ne génère pas d'exception.

Paramètres
args String

Renvoie
List<String> List des arguments restants

validateMandatoryOptions

public void validateMandatoryOptions ()

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

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