#!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1 urequire 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. -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