diff --git a/lib/ulib/uinst b/lib/ulib/uinst index b93e2ed..16967f9 100644 --- a/lib/ulib/uinst +++ b/lib/ulib/uinst @@ -49,6 +49,7 @@ function uinst() { local workdir_includes local copy_files local destdir + local destdir_override_userhost local srcdir local -a files local owner @@ -76,8 +77,15 @@ OPTIONS liste de préfixes valides. Utiliser 'udir --help-vars' pour avoir une liste de variables valides pour $scriptname. -d /path/to/destdir - Spécifier le répertoire destination. Equivalent à l'option - destdir=\"/path/to/destdir\" + Spécifier le répertoire destination, exactement comme si la valeur + destdir avait été spécifiée, i.e destdir=\"/path/to/destdir\" + -h, --host [user@]host + Avec la méthode de déploiement uinst:rsync, permettre de spécifier un + hôte différent. Cette option est ignorée pour les autres méthodes de + déploiement. Si host vaut localhost, un déploiement local avec ssh est + effectué. Si host vaut '.', un déploiement local *sans passer par ssh* + est effectué, comme si seul le chemin avait été spécifié. + Cette option initialise la valeur destdir_override_userhost -a (par défaut) Si la source n'est pas spécifiée, déterminer le répertoire à déployer automatiquement. --no-auto @@ -131,7 +139,8 @@ OPTIONS --is-tmpdir UINST_ISTMPDIR \ -O: '$__uinst_addvar owner "$value_"' \ -m: '$__uinst_addvar modes "$value_"' \ - -d: '$__uinst_addvar destdir $value_' \ + -d: '$__uinst_addvar destdir "$value_"' \ + -h:,-H:,--host: '$__uinst_addvar destdir_override_userhost "$value_"' \ -a,--auto UINST_AUTOSRCDIR=1 \ --no-auto UINST_AUTOSRCDIR= \ --prefix UINST_AUTOPREFIX=1 \ @@ -197,6 +206,7 @@ function __uinst_init() { workdir_includes='()' copy_files='true' destdir='/usr/local' + destdir_override_userhost= srcdir='.' files='()' owner='root:' @@ -375,7 +385,7 @@ Utilisez 'udir -e $(ppath "$srcdir")' pour modifier les paramètres." function __uinst_defaultvars() { eval "$(array_join UINST_DEFAULTS ';')" - UDIR_VARS=(uinc install_profiles profiledir bashrcdir defaultdir copy_files destdir srcdir owner) + UDIR_VARS=(uinc install_profiles profiledir bashrcdir defaultdir copy_files destdir destdir_override_userhost srcdir owner) UDIR_ARRAYS=(uinc_options uinc_args preconfig_scripts configure_variables configure_dest_for config_scripts workdir_rsync_options workdir_excludes workdir_includes files modes root_scripts) } @@ -910,6 +920,20 @@ function __uinst_rsync() { __uinst_setvars # corriger éventuellement destdir [ -n "$UINST_AUTOPREFIX" ] && destdir="$(expand_prefix "$destdir")" + # si un hôte a été spécifié avec --host, utiliser cette valeur + if [ -n "$destdir_override_userhost" ]; then + splituserhost "$destdir_override_userhost" __override_user __override_host + splitfsep2 "$destdir" : __destdir_userhost __destdir_path + splituserhost "$__destdir_userhost" __destdir_user __destdir_host + [ -n "$__override_user" ] || __override_user="$__destdir_user" + if [ "$__override_host" != . ]; then + # déploiement distant + destdir="${__override_user:+$__override_user@}$__override_host:$__destdir_path" + else + # déploiement local + destdir="$__destdir_path" + fi + fi # les variables de configure_variables ne sont pas prises en compte. pas la # peine de les afficher configure_variables=() @@ -928,7 +952,11 @@ function __uinst_rsync() { if [ -n "${files[*]}" ]; then srcdesc="$srcdesc/{$(array_join files ,)}" fi - ask_yesno "Synchroniser $srcdesc vers $(ppath "$destdir") sur $MYHOST?" O || return + if [[ "$destdir" == *:* ]]; then + ask_yesno "Synchroniser $srcdesc vers $(ppath "$destdir")?" O || return + else + ask_yesno "Synchroniser $srcdesc vers $(ppath "$destdir") sur $MYHOST?" O || return + fi fi cd "$srcdir" || return 1