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(
Crée un |
|
ArgsOptionParser(Object... optionSources)
Crée un |
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 |
|
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(
Méthode |
|
parseBestEffort(
Méthode |
|
parseBestEffort(
Méthode |
|
parseBestEffort(String... args)
Version optimale de |
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
publicgetInopOptions ()
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
publicparse (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
publicparse ( 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
publicparseBestEffort ( 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
publicparseBestEffort ( 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
publicparseBestEffort (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 |