nutools/runsconfig

132 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire DEFAULTS template runs
function display_help() {
uecho "$scriptname: Gérer un répertoire d'hôte de runs
USAGE
$scriptname -c [host [destdir]]
$scriptname -t -- args...
OPTIONS
-c, --create
Créer un nouveau répertoire de configuration pour un hôte
-d, --destdir DESTDIR[=$TEMPLATECTL_NAME]
Nom du répertoire local de configuration. Utiliser 'apacheconfig' par
défaut.
-t, --template [OPT]
Gérer les fichiers du répertoire local avec templatectl. La valeur de
cette option est utilisée comme argument court pour l'invocation de
templatectl, e.g
$scriptname -tm args
est équivalent à
templatectl -m args
Les arguments qui restent sont passés tels quels à templatectl
Les options courantes de templatectl -l, -v, -m, -L sont disponibles
directement
--help-template
Afficher l'aide concernent la gestion des templates.
Equivalent à -t -- --help
-h, --host HOST
Spécifier l'hôte. Equivalent à -v host=HOST"
}
## Valeurs par défaut des variables de template
set_defaults runs
# essayer de déterminer l'hôte à partir du répertoire courant
DEFAULT_HOST=
array_split __hostsdirs "$RUNSHOSTSPATH" :
setx __cwd=pwd
for __hostsdir in "${__hostsdirs[@]}"; do
setx __hostsdir=abspath "$__hostsdir"
if [ "${__cwd#$__hostsdir/}" != "$__cwd" ]; then
DEFAULT_HOST="${__cwd#$__hostsdir/}"
DEFAULT_HOST="${DEFAULT_HOST%%/*}"
break
fi
done
# sinon lire l'environnement
if [ -z "$DEFAULT_HOST" ]; then
runs_initdomains
setx DEFAULT_HOST=myhost
splithost "$DEFAULT_HOST" __hostname __domain
if [ -z "$__domain" ]; then
DEFAULT_HOST="$(runs_find_host "$DEFAULT_HOST")"
splithost "$DEFAULT_HOST" __hostname __domain
fi
[ -n "$__domain" ] || DEFAULT_HOST="$(runs_add_domain "$DEFAULT_HOST")"
fi
TEMPLATE_STATIC_VARS=(host hostname)
TEMPLATE_DYNAMIC_VARS=()
TEMPLATE_NOWRITE_VARS=(hostname)
__TEMPLATE_DEFAULTF_host=__template_defaultf_host
__TEMPLATE_UPDATEF_host=__template_updatef_host
function __template_defaultf_host() {
echo "$DEFAULT_HOST"
}
function __template_updatef_host() {
__template_set_var hostname "${host%%.*}"
}
TEMPLATECTL_NAME=runs
TEMPLATECTL_SRCDIRS=(runsconfig)
TEMPLATECTL_CONFIG=runsconfig
TEMPLATECTL_DEFAULTS=()
TEMPLATECTL_VARS=()
action=
destdir=
templateopt=
certsdir=
args=(
--help '$exit_with display_help'
-t::,--template:: '$set@ templateopt; action=template'
--help-template '$templateopt=-help; action=template'
-l,--list '$templateopt=l; action=template'
-v:,--var: TEMPLATECTL_VARS
-m,--merge '$templateopt=m; action=template'
-L,--list-vars '$templateopt=L; action=template'
-c,--create action=create
-h:,--host: '$array_add TEMPLATECTL_VARS host="$value_"'
-d:,--destdir: destdir=
)
parse_args "$@"; set -- "${args[@]}"
__template_set_destdir destdir autocreate "$TEMPLATECTL_NAME" || die
setx config=templatectl_config "$destdir"
templatectl_loadvars "$config"
if [ -z "$host" ]; then
[ -n "$host" ] || host="$1"
[ -n "$host" ] || host="$DEFAULT_HOST"
__template_set_var host "$host"
fi
################################################################################
if [ "$action" == create ]; then
if [ -n "$autocreate" -a ! -d "$destdir" ]; then
estepn "Création automatique de $(ppath "$destdir")"
mkdir -p "$destdir" || die
fi
[ -d "$destdir" ] || die "$destdir: répertoire introuvable"
read_value ${host:+-i} "Veuillez entrer le nom d'hôte" host "$host"
__template_set_var host "$host"
templatectl -d "$destdir" --no-load-vars -m
################################################################################
elif [ "$action" == template ]; then
__TEMPLATECTL_HELP="USAGE: $scriptname -t -- args...
$__TEMPLATECTL_HELP"
templatectl -d "$destdir" --no-load-vars ${templateopt:+-$templateopt} "$@"
fi