afficher --help++ dans l'aide
This commit is contained in:
parent
b7586b92d0
commit
9fea3c603b
|
@ -146,7 +146,9 @@ function parse_args() {
|
||||||
}
|
}
|
||||||
function __parse_args() {
|
function __parse_args() {
|
||||||
## tout d'abord, construire la liste des options
|
## 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
|
local -a __defs
|
||||||
set -- "${__DEFS[@]}"
|
set -- "${__DEFS[@]}"
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
|
@ -181,17 +183,20 @@ function __parse_args() {
|
||||||
__def="${__def#-}"
|
__def="${__def#-}"
|
||||||
__lopts="$__lopts${__lopts:+,}$__def$__witharg"
|
__lopts="$__lopts${__lopts:+,}$__def$__witharg"
|
||||||
fi
|
fi
|
||||||
[ "$__def" == help -o "$__def" == help++ ] && __autohelp=
|
[ "$__def" == help -o "$__def" == help++ ] && __AUTOHELP=
|
||||||
done
|
done
|
||||||
# sauter l'action
|
# sauter l'action
|
||||||
shift
|
shift
|
||||||
# sauter la description le cas échéant
|
# sauter la description le cas échéant
|
||||||
[ "${1#-}" == "$1" ] && shift
|
if [ "${1#-}" == "$1" ]; then
|
||||||
|
[ "${1#++}" != "$1" ] && __ADVHELP=1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# __sopts ne doit pas être vide, rajouter ? si aucune option courte n'est
|
# __sopts ne doit pas être vide, rajouter ? si aucune option courte n'est
|
||||||
# définie, indépendamment de la valeur de autohelp
|
# 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=?
|
[ -n "$__sopts" ] || __sopts=?
|
||||||
|
|
||||||
__sopts="$__popt$__sopts"
|
__sopts="$__popt$__sopts"
|
||||||
|
@ -287,6 +292,11 @@ $prefix$usage"
|
||||||
if [ -n "$first" ]; then
|
if [ -n "$first" ]; then
|
||||||
first=
|
first=
|
||||||
help="$help${nl}${nl}OPTIONS"
|
help="$help${nl}${nl}OPTIONS"
|
||||||
|
if [ -n "$__AUTOHELP" -a -n "$__ADVHELP" ]; then
|
||||||
|
help="$help
|
||||||
|
--help++
|
||||||
|
Afficher l'aide avancée"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
# est-ce que l'option prend un argument?
|
# est-ce que l'option prend un argument?
|
||||||
__witharg=
|
__witharg=
|
||||||
|
@ -434,7 +444,7 @@ function __parse_opt() {
|
||||||
|
|
||||||
[ -n "$__found" ] && return 0
|
[ -n "$__found" ] && return 0
|
||||||
done
|
done
|
||||||
if [ -n "$__autohelp" ]; then
|
if [ -n "$__AUTOHELP" ]; then
|
||||||
if [ "$option_" == --help -o "$option" == -? ]; then
|
if [ "$option_" == --help -o "$option" == -? ]; then
|
||||||
__action="showhelp@"
|
__action="showhelp@"
|
||||||
return 0
|
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