amélioration parse_args
This commit is contained in:
parent
2b10acacb2
commit
3fc5f05f5d
|
@ -0,0 +1,22 @@
|
|||
# nulib/bash
|
||||
|
||||
* [ ] args: support des noms d'argument pour améliorer l'affichage de l'aide.
|
||||
par exemple la définition
|
||||
~~~
|
||||
-f:FILE,--input input= "spécifier le fichier en entrée"
|
||||
~~~
|
||||
donnera cette aide:
|
||||
~~~
|
||||
-f, --input FILE
|
||||
spécifier le fichier
|
||||
~~~
|
||||
* [ ] args: après le support des noms d'arguments, ajouter la génération
|
||||
automatique de l'auto-complétion basée sur ces informations. certains noms
|
||||
seraient normalisés: FILE pour un fichier, DIR pour un répertoire, ENV pour
|
||||
une variable d'environnement, etc.
|
||||
on pourrait même considérer mettre des patterns pour la sélection, e.g
|
||||
~~~
|
||||
"-C,--config:FILE:*.conf" input= "spécifier le fichier de configuration"
|
||||
~~~
|
||||
|
||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -47,6 +47,8 @@ usage
|
|||
Peut contenir autant de lignes que nécessaire. Chaque ligne est préfixée du
|
||||
nom du script, jusqu'à la première ligne vide. Ensuite, les lignes sont
|
||||
affichées telles quelles.
|
||||
Le premier espace est ignoré, ce qui permet de spécifier des USAGEs avec une
|
||||
option, e.g ' -c VALUE'
|
||||
|
||||
+|-
|
||||
: méthode d'analyse des arguments.
|
||||
|
@ -241,7 +243,7 @@ function __parse_args() {
|
|||
|
||||
local first usage nl=$'\n'
|
||||
local prefix=" $MYNAME "
|
||||
local usages="$__USAGE"
|
||||
local usages="${__USAGE# }"
|
||||
[ -n "$usages" ] || usages="[options]"
|
||||
help="$help
|
||||
|
||||
|
@ -274,9 +276,7 @@ $prefix$usage"
|
|||
esac
|
||||
if [ -n "$first" ]; then
|
||||
first=
|
||||
help="$help
|
||||
|
||||
OPTIONS"
|
||||
help="$help${nl}${nl}OPTIONS"
|
||||
fi
|
||||
# est-ce que l'option prend un argument?
|
||||
__witharg=
|
||||
|
@ -301,8 +301,7 @@ OPTIONS"
|
|||
fi
|
||||
if [ -n "$first" ]; then
|
||||
first=
|
||||
help="$help
|
||||
"
|
||||
help="$help${nl} "
|
||||
else
|
||||
help="$help, "
|
||||
fi
|
||||
|
@ -313,8 +312,7 @@ OPTIONS"
|
|||
shift
|
||||
# prendre la description le cas échéant
|
||||
if [ "${1#-}" == "$1" ]; then
|
||||
help="$help
|
||||
$1"
|
||||
help="$help${nl} ${1//$nl/$nl }"
|
||||
shift
|
||||
fi
|
||||
done
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
source "$(dirname -- "$0")/../src/nulib.sh" || exit 1
|
||||
#NULIB_NO_DISABLE_SET_X=1
|
||||
|
||||
args=(
|
||||
"tester l'affichage de l'aide"
|
||||
-f:,--input input= "spécifier le fichier en entrée
|
||||
il est possible de spécifier aussi un répertoire auquel cas un fichier par défaut est chargé
|
||||
nb: l'aide pour cette option doit faire 3 lignes indentées"
|
||||
)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
enote "lancer le script avec --help pour afficher l'aide"
|
Loading…
Reference in New Issue