Formats d'options pris en charge
argus prend en charge plusieurs formats d'options pour offrir une flexibilité maximale aux utilisateurs finaux. Cette flexibilité permet à votre programme de gérer différentes conventions de ligne de commande et de s'adapter aux diverses préférences des utilisateurs.
Options standard
Aperçu
argus reconnaît plusieurs formats standard pour les options de ligne de commande, notamment les options longues de style GNU, les options courtes de style POSIX, et diverses combinaisons.
Options longues
Pour les options avec un nom long (--option) :
Exemple
Options courtes
Pour les options avec un nom court (-o) :
Exemple
Terminateur d'options (--)
Tip
Le double tiret -- est reconnu comme un terminateur indiquant la fin des options. Tout ce qui suit est traité comme des arguments positionnels, même s'ils commencent par - ou --.
Dans cet exemple, --file-with-dashes.txt est traité comme un argument positionnel, pas comme une option.
Collections multi-valeurs
argus prend en charge les options de collection qui peuvent contenir plusieurs valeurs (tableaux) ou paires clé-valeur (mappages).
Formats d'options de tableau
Pour les options de tableau comme OPTION_ARRAY_STRING, OPTION_ARRAY_INT, etc. :
Plages d'entiers
Les options de tableau d'entiers prennent en charge une syntaxe de plage pratique :
Formats d'options de mapping
Pour les options de mapping comme OPTION_MAP_STRING, OPTION_MAP_INT, etc. :
Mappings booléens
Pour les mappings booléens (OPTION_MAP_BOOL), les valeurs sont analysées comme des booléens :
- Valeurs vraies : "true", "yes", "1", "on", "y" (insensible à la casse)
- Valeurs fausses : "false", "no", "0", "off", "n" (insensible à la casse)
Arguments positionnels
Les arguments positionnels sont traités dans l'ordre où ils apparaissent sur la ligne de commande, après la correspondance de toutes les options :
Dans cet exemple, file1.txt et file2.txt sont des arguments positionnels.
Arguments positionnels requis vs optionnels
argus distingue les arguments positionnels requis et optionnels :
Warning
Les arguments positionnels requis doivent toujours être définis avant les optionnels dans votre définition ARGUS_OPTIONS.
Arguments positionnels avec options
Les arguments positionnels peuvent être utilisés avec des options dans n'importe quel ordre :
my_program --verbose input.txt --output=output.txt
my_program input.txt --verbose --output=output.txt
Les deux commandes sont équivalentes, car argus identifie les arguments positionnels après avoir fait correspondre toutes les options.
Sous-commandes
argus prend en charge les sous-commandes de style Git/Docker, permettant des hiérarchies de commandes complexes :
Format de base des sous-commandes
Exemples :
Sous-commandes imbriquées
argus prend également en charge les sous-commandes imbriquées pour des hiérarchies de commandes plus profondes :
Exemples :
my_program --debug service create --name myservice --image ubuntu
my_program config set server.port 8080
Abréviations de commandes
argus prend en charge les abréviations de noms de commandes, permettant aux utilisateurs de taper des versions abrégées tant qu'elles sont sans ambiguïté :
# Ces commandes sont équivalentes si aucune autre commande ne commence par "i" :
my_program install package.tgz
my_program inst package.tgz
my_program i package.tgz
# Mais ambiguës s'il y a plusieurs correspondances
my_program i package.tgz # ERREUR si "install" et "init" existent tous deux
Mélange de différents formats
argus permet de mélanger différents styles de format dans une seule ligne de commande :
Cette commande comprend :
- Un drapeau d'option courte (-v)
- Une option longue avec valeur (--output=file.txt)
- Des arguments positionnels (file1.txt file2.txt)
- Une sous-commande avec sa propre option (add --force extra.txt)
Gestion des options ambiguës
Dans certains cas, l'entrée de ligne de commande peut être ambiguë. argus résout l'ambiguïté en utilisant ces règles :
- Un argument commençant par un seul tiret (
-) suivi d'un seul caractère est traité comme une option courte - Un argument commençant par des doubles tirets (
--) est traité comme une option longue - Un argument après
--est toujours traité comme un argument positionnel - Un argument ne commençant pas par un tiret est traité comme un argument positionnel ou une sous-commande (selon la définition)
Lors de l'analyse d'options courtes combinées (-abc) :
- Chaque caractère est traité comme une option booléenne séparée
- Si une option non booléenne est rencontrée, le reste de la chaîne est traité comme sa valeur
Formes équivalentes en ligne de commande
Les formes de commande suivantes sont toutes équivalentes avec des définitions d'options appropriées :
| Format | Exemple |
|---|---|
| Options longues avec signe égal | ./my_program --verbose --output=file.txt input.txt |
| Options longues avec espace | ./my_program --verbose --output file.txt input.txt |
| Options courtes avec espace | ./my_program -v -o file.txt input.txt |
| Options courtes sans espace | ./my_program -v -ofile.txt input.txt |
| Options courtes combinées | ./my_program -vo file.txt input.txt |
| Options courtes combinées avec valeur | ./my_program -vofile.txt input.txt |
Utilisation du terminateur -- |
./my_program -v -- --input-with-dashes.txt |
| Avec sous-commande | ./my_program -v add --force file.txt |
Notes importantes
Warning
- Les options booléennes (drapeaux) ne nécessitent pas de valeur ; leur présence suffit à les activer.
- Les options combinées (
-abc) ne fonctionnent que pour les options booléennes. - Pour les options non booléennes, la dernière option d'une combinaison peut prendre une valeur.
Exemples
-vo output.txt(active l'option-vet définit-oàoutput.txt)-vooutput.txt(active l'option-vet définit-oàoutput.txt)-vxooutput.txt(active les options-vet-x, et définit-oàoutput.txt)
Note
Les arguments positionnels sont toujours traités dans l'ordre défini dans ARGUS_OPTIONS.