afficher --help++ dans l'aide
This commit is contained in:
parent
b7586b92d0
commit
9fea3c603b
|
@ -146,7 +146,9 @@ function parse_args() {
|
|||
}
|
||||
function __parse_args() {
|
||||
## tout d'abord, construire la liste des options
|
||||
local __popt __sopts __lopts __autohelp=1
|
||||
local __AUTOHELP=1 # faut-il gérer automatiquement l'affichage de l'aide?
|
||||
local __ADVHELP # y a-t-il des options avancées?
|
||||
local __popt __sopts __lopts
|
||||
local -a __defs
|
||||
set -- "${__DEFS[@]}"
|
||||
while [ $# -gt 0 ]; do
|
||||
|
@ -181,17 +183,20 @@ function __parse_args() {
|
|||
__def="${__def#-}"
|
||||
__lopts="$__lopts${__lopts:+,}$__def$__witharg"
|
||||
fi
|
||||
[ "$__def" == help -o "$__def" == help++ ] && __autohelp=
|
||||
[ "$__def" == help -o "$__def" == help++ ] && __AUTOHELP=
|
||||
done
|
||||
# sauter l'action
|
||||
shift
|
||||
# sauter la description le cas échéant
|
||||
[ "${1#-}" == "$1" ] && shift
|
||||
if [ "${1#-}" == "$1" ]; then
|
||||
[ "${1#++}" != "$1" ] && __ADVHELP=1
|
||||
shift
|
||||
fi
|
||||
done
|
||||
|
||||
# __sopts ne doit pas être vide, rajouter ? si aucune option courte n'est
|
||||
# définie, indépendamment de la valeur de autohelp
|
||||
[ -n "$__autohelp" ] && __lopts="$__lopts${__lopts:+,}help,help++"
|
||||
[ -n "$__AUTOHELP" ] && __lopts="$__lopts${__lopts:+,}help,help++"
|
||||
[ -n "$__sopts" ] || __sopts=?
|
||||
|
||||
__sopts="$__popt$__sopts"
|
||||
|
@ -287,6 +292,11 @@ $prefix$usage"
|
|||
if [ -n "$first" ]; then
|
||||
first=
|
||||
help="$help${nl}${nl}OPTIONS"
|
||||
if [ -n "$__AUTOHELP" -a -n "$__ADVHELP" ]; then
|
||||
help="$help
|
||||
--help++
|
||||
Afficher l'aide avancée"
|
||||
fi
|
||||
fi
|
||||
# est-ce que l'option prend un argument?
|
||||
__witharg=
|
||||
|
@ -434,7 +444,7 @@ function __parse_opt() {
|
|||
|
||||
[ -n "$__found" ] && return 0
|
||||
done
|
||||
if [ -n "$__autohelp" ]; then
|
||||
if [ -n "$__AUTOHELP" ]; then
|
||||
if [ "$option_" == --help -o "$option" == -? ]; then
|
||||
__action="showhelp@"
|
||||
return 0
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
#!/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")
|
||||
|
||||
case "$1" in
|
||||
s|std)
|
||||
# NB: seul l'affichage standard est disponible...
|
||||
args+=(
|
||||
-h,--help,--hstd '$showhelp@' "afficher l'aide de base"
|
||||
)
|
||||
shift
|
||||
;;
|
||||
a|adv)
|
||||
# NB: seul l'affichage avancé est disponible...
|
||||
args+=(
|
||||
-H,--help++,--hadv '$showhelp@ ++' "afficher l'aide avancée"
|
||||
)
|
||||
shift
|
||||
;;
|
||||
sa|std+adv)
|
||||
args+=(
|
||||
-h,--help,--hstd '$showhelp@' "afficher l'aide de base"
|
||||
-H,--help++,--hadv '$showhelp@ ++' "afficher l'aide avancée"
|
||||
)
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
|
||||
args+=(
|
||||
-a,--std . "cette option apparait dans les options standards"
|
||||
-b,--adv . "++cette option apparait dans les options avancées"
|
||||
)
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
enote "lancer le script
|
||||
- avec --help pour afficher les options standards uniquement
|
||||
- avec --help++ pour afficher toutes les options"
|
Loading…
Reference in New Issue