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) {
...
}
...
}
- 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(Collection<Object> optionSources)
Crée un |
|
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 |
List<String>
|
parse(List<String> args)
Méthode |
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 |
List<String>
|
parseBestEffort(List<String> args, boolean forceContinue)
Méthode |
List<String>
|
parseBestEffort(String... args)
Version optimisée de |
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]
| 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 |
|