132 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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
 |