support de l'option -T pour shell

ajout de l'option -g pour utempl
This commit is contained in:
Jephte CLAIN 2013-10-31 00:33:27 +04:00
parent 9a0343e59f
commit a6181a92dd
2 changed files with 57 additions and 21 deletions

View File

@ -12,6 +12,12 @@ OPTIONS
Indiquer, le cas échéant, le modèle de fichier à utiliser pour la Indiquer, le cas échéant, le modèle de fichier à utiliser pour la
génération. Les valeurs valides sont: génération. Les valeurs valides sont:
${TEMPLATES[*]} ${TEMPLATES[*]}
-T TYPE
Pour un script exécutable, indiquer le type de script à générer:
system-or-local, sl -- utilise ulib/auto et genparse()
default, d -- utilise /etc/ulibauto et genparse()
manual, m -- utilise /etc/ulib et parse_opts()
vanilla, v -- script simple
-e, --edit -e, --edit
-g, --no-edit -g, --no-edit
Editer (resp. ne pas éditer) le fichier après l'avoir généré. Editer (resp. ne pas éditer) le fichier après l'avoir généré.
@ -66,35 +72,43 @@ function generate_shell() {
check_overwrite "$1" || return check_overwrite "$1" || return
case "$type" in
system-or-local|sol|sl|u) type=system-or-local;;
default|def|d) type=default;;
manual|man|m) type=manual;;
vanilla|van|v) type=vanilla;;
esac
local modeline="# -*- coding: $encoding ${mode:+mode: $mode }-*- vim:sw=4:sts=4:et:ai:si:sta:fenc=$encoding" local modeline="# -*- coding: $encoding ${mode:+mode: $mode }-*- vim:sw=4:sts=4:et:ai:si:sta:fenc=$encoding"
if [ -n "$executable" ]; then if [ -n "$executable" ]; then
etitle "$(ppath "$file")" etitle "$(ppath "$file")"
local type= if [ -z "$type" ]; then
if [ -d "$dir/ulib" ]; then if [ -d "$dir/ulib" ]; then
ask_yesno "\ ask_yesno "\
Le type de script 'system-or-local' a été sélectionné automatiquement Le type de script 'system-or-local' a été sélectionné automatiquement
Une librairie ulib locale est présente. En chargeant ulib/auto, la librairie Une librairie ulib locale est présente. En chargeant ulib/auto, la librairie
système /etc/ulib sera utilisée si elle est disponible. Sinon, la librairie système /etc/ulib sera utilisée si elle est disponible. Sinon, la librairie
locale ulib/ulib sera utilisée. locale ulib/ulib sera utilisée.
Voulez-vous générer un script avec cette configuration?" X && Voulez-vous générer un script avec cette configuration?" X &&
type=system-or-local type=system-or-local
elif [ -f /etc/ulibauto ]; then elif [ -f /etc/ulibauto ]; then
ask_yesno "\ ask_yesno "\
Le type de script 'default' a été sélectionné automatiquement Le type de script 'default' a été sélectionné automatiquement
En chargeant /etc/ulibauto, la librairie ulib système sera utilisée, et les En chargeant /etc/ulibauto, la librairie ulib système sera utilisée, et les
paramètres par défaut seront utilisés. paramètres par défaut seront utilisés.
Voulez-vous générer un script avec cette configuration?" X && Voulez-vous générer un script avec cette configuration?" X &&
type=default type=default
else else
ask_yesno "\ ask_yesno "\
Le type de script 'manual' a été sélectionné automatiquement Le type de script 'manual' a été sélectionné automatiquement
Une vieille version de nutools est installée. Il faut charger /etc/ulib et Une vieille version de nutools est installée. Il faut charger /etc/ulib et
définir manuellement les paramètres à utiliser. définir manuellement les paramètres à utiliser.
Voulez-vous générer un script avec cette configuration?" X && Voulez-vous générer un script avec cette configuration?" X &&
type=manual type=manual
fi
fi fi
if [ -z "$type" ]; then if [ -z "$type" ] && check_interaction -c; then
enote "Plusieurs type de scripts peuvent être générés: enote "Plusieurs type de scripts peuvent être générés:
- Avec le type 'system-or-local', on assume qu'une librairie ulib locale est - Avec le type 'system-or-local', on assume qu'une librairie ulib locale est
présente. Le fichier ulib/auto est chargé, ce qui a pour conséquence que la présente. Le fichier ulib/auto est chargé, ce qui a pour conséquence que la
@ -114,17 +128,29 @@ Voulez-vous générer un script avec cette configuration?" X &&
-m "Veuillez choisir le type de script à générer" \ -m "Veuillez choisir le type de script à générer" \
-d manual -d manual
fi fi
if [ -z "$type" ]; then
if [ -d "$dir/ulib" ]; then
enote "Le type de script 'system-or-local' a été sélectionné automatiquement"
type=system-or-local
elif [ -f /etc/ulibauto ]; then
enote "Le type de script 'default' a été sélectionné automatiquement"
type=default
else
enote "Le type de script 'manual' a été sélectionné automatiquement"
type=manual
fi
fi
if [ "$type" == system-or-local ]; then if [ "$type" == system-or-local ]; then
echo >"$file" '#!/bin/bash echo >"$file" '#!/bin/bash
'"$modeline"' '"$modeline"'
source "$(dirname "$0")/ulib/auto" source "$(dirname "$0")/ulib/auto" || exit 1
eval "$(genparse)" eval "$(genparse)"
' '
elif [ "$type" == default ]; then elif [ "$type" == default ]; then
echo >"$file" '#!/bin/bash echo >"$file" '#!/bin/bash
'"$modeline"' '"$modeline"'
source /etc/ulibauto source /etc/ulibauto || exit 1
eval "$(genparse)" eval "$(genparse)"
' '
elif [ "$type" == manual ]; then elif [ "$type" == manual ]; then
@ -163,6 +189,7 @@ $modeline"
} }
template= template=
type=
edit=1 edit=1
overwrite= overwrite=
encoding= encoding=
@ -170,6 +197,7 @@ executable=1
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-t:,--template: template= \ -t:,--template: template= \
-T:,--type: type= \
-e,--edit edit=1 \ -e,--edit edit=1 \
-g,--no-edit edit= \ -g,--no-edit edit= \
-f,--overwrite overwrite=1 \ -f,--overwrite overwrite=1 \

24
utempl
View File

@ -12,8 +12,10 @@ Avant le nom du nouveau fichier, les options suivantes peuvent être utilisées:
-t TEMPLATE -t TEMPLATE
Spécifier le modèle de fichier à utiliser. Par défaut, le modèle Spécifier le modèle de fichier à utiliser. Par défaut, le modèle
à utiliser est déduit de l'extension ou du nom du fichier. à utiliser est déduit de l'extension ou du nom du fichier.
-e -e, --edit
Editer le fichier après l'avoir créé. Editer le fichier après l'avoir créé
-g, --no-edit
Ne pas éditer le fichier après l'avoir créé
Après le nom du fichier, toutes les options sont spécifiques au modèle Après le nom du fichier, toutes les options sont spécifiques au modèle
utilisé pour créer le nouveau fichier. Utiliser l'option --help pour utilisé pour créer le nouveau fichier. Utiliser l'option --help pour
@ -25,7 +27,7 @@ urequire DEFAULTS ||
exit 1 exit 1
template= template=
edit= edit=auto
overwrite= overwrite=
encoding=auto encoding=auto
executable=auto executable=auto
@ -34,12 +36,12 @@ parse_opts + "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-t:,--template: template= \ -t:,--template: template= \
-e,--edit edit=1 \ -e,--edit edit=1 \
--no-edit edit= \ -g,--no-edit edit= \
-f,--overwrite overwrite=1 \ -f,--overwrite overwrite=1 \
-E:,--encoding: encoding= \ -E:,--encoding: encoding= \
-x,--executable executable=1 \ -x,--executable executable=1 \
-n,--no-executable executable= \ -n,--no-executable executable= \
-a,-b,-c,-d,-g,-h,-i,-j,-k,-l,-m,-o,-p,-q,-r,-s,-u,-v,-w,-y,-z,-A,-B,-C,-D,-F,-G,-H,-I,-J,-K,-L,-M,-N,-O,-P,-Q,-R,-S,-T,-U,-V,-W,-X,-Y,-Z '$array_add opts "$option_"' \ -a,-b,-c,-d,-h,-i,-j,-k,-l,-m,-o,-p,-q,-r,-s,-u,-v,-w,-y,-z,-A,-B,-C,-D,-F,-G,-H,-I,-J,-K,-L,-M,-N,-O,-P,-Q,-R,-S,-T,-U,-V,-W,-X,-Y,-Z '$array_add opts "$option_"' \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
[ -n "$template" ] || template=auto [ -n "$template" ] || template=auto
@ -87,7 +89,14 @@ fi
args=() args=()
[ "$template" != "auto" ] && args=("${args[@]}" --template "$template") [ "$template" != "auto" ] && args=("${args[@]}" --template "$template")
args=("${args[@]}" ${edit:+--edit} ${overwrite:+--overwrite}) if [ "$edit" != "auto" ]; then
if [ -n "$edit" ]; then
args=("${args[@]}" --edit)
else
args=("${args[@]}" --no-edit)
fi
fi
args=("${args[@]}" ${overwrite:+--overwrite})
[ "$encoding" != "auto" ] && args=("${args[@]}" --encoding "$encoding") [ "$encoding" != "auto" ] && args=("${args[@]}" --encoding "$encoding")
if [ "$executable" != "auto" ]; then if [ "$executable" != "auto" ]; then
if [ -n "$executable" ]; then if [ -n "$executable" ]; then
@ -96,5 +105,4 @@ if [ "$executable" != "auto" ]; then
args=("${args[@]}" --no-executable) args=("${args[@]}" --no-executable)
fi fi
fi fi
array_extend args opts exec "$templ" "$file" "${args[@]}" "${opts[@]}" "$@"
exec "$templ" "${args[@]}" "$file" "$@"