diff --git a/rtoinst b/rtoinst index fc7c6ac..1969527 100755 --- a/rtoinst +++ b/rtoinst @@ -42,9 +42,12 @@ OPTIONS Par défaut, si aucun hôte n'est spécifié, la configuration locale de déploiement est interrogée pour avoir cette information. -c, --deploy-config CONFNAME - Cette option permet de spécifier le nom de la configuration locale de - déploiement à utiliser pour effectuer la requête. Par défaut, utiliser - le nom 'rtoinst'" + Spécifier le nom de la configuration à utiliser pour l'interrogation de + la configuration locale de déploiement. Par défaut, utiliser le nom + 'rtoinst' + -p, --deploy-profile PROFILE + Spécifier le profil à utiliser pour l'interrogation de la configuration + locale de déploiement. Par défaut, aucun profil n'est sélectionné." } __PARSED_HOSTS=() @@ -116,6 +119,7 @@ SSH= hosts=() deploy_enable=1 deploy_confname=rtoinst +deploy_profile= parse_opts "${PRETTYOPTS[@]}" \ --help '$exit_with display_help' \ -T:,--tmproot: tmproot= \ @@ -123,7 +127,8 @@ parse_opts "${PRETTYOPTS[@]}" \ -h:,-H:,--host: hosts \ --deploy deploy_enable=1 \ --no-deploy deploy_enable= \ - -c:,--deploy-config deploy_confname= \ + -c:,--deploy-config: deploy_confname= \ + -p:,--deploy-profile: deploy_profile= \ @ args -- "$@" && set -- "${args[@]}" || die "$args" : "${SSH:=ssh}" @@ -142,7 +147,7 @@ if array_isempty hosts && [ -n "$deploy_enable" ]; then deploy_setconf "$deploy_confname" if deploy_loadconf; then setxx webapp=abspath "$1" // basename -- - if eval "$(deploy_query -v host DEST webapp rtoinst_deploy "" shell "$webapp")"; then + if eval "$(deploy_query -v host DEST webapp rtoinst_deploy "$deploy_profile" shell "$webapp")"; then check_interaction -c && einfo "Cette webapp sera déployée vers les hôtes suivants: $(array_to_lines host "" " ")" ask_any "Voulez-vous continuer?" Oq || die @@ -157,7 +162,7 @@ fix_hosts etitle "Création du répertoire de travail" ac_set_tmpdir workdir webapps=() -while [ -n "$1" ]; do +while [ $# -gt 0 ]; do if [ "$1" == "--" ]; then # début des options de toinst shift @@ -167,21 +172,26 @@ while [ -n "$1" ]; do break fi - src="$1"; shift + osrc="$1"; shift + setx src=abspath "$osrc" + setx srcname=basename -- "$src" if [ -f "$src" ] && is_archive "$src"; then - estep "$(ppath "$src")" - cp_R "$src" "$workdir" || die + setx waname=get_archive_appname "$src" + estep "$(ppath "$src") --> $waname" + wadir="$workdir/$waname" + mkdir "$wadir" + extract_archive "$src" "$wadir" || die + src="$wadir" elif [ -d "$src" ]; then estep "$(ppath "$src")" - cp_R "$src" "$workdir" || die + cp_R "$src" "$workdir/$srcname" || die elif [ -e "$src" ]; then - die "$src: fichier invalide" + die "$osrc: fichier invalide" else - die "$src: fichier ou répertoire introuvable" + die "$osrc: fichier ou répertoire introuvable" fi - src="$(abspath "$src")" - array_add webapps "$(basename "$src")" + array_add webapps "$srcname" done estep "Copie de l'environnement de déploiement" @@ -196,7 +206,7 @@ ac_set_tmpfile archive archivename="$(basename "$archive")" etitle "Création de l'archive pour le déploiement" -"$scriptdir/mkusfx" --bare --tmp-archive -o "$archive" "$workdir" -- ./toinst "${webapps[@]}" || die +"$scriptdir/mkusfx" --bare --tmp-archive -o "$archive" "$workdir" -- ./toinst --is-tmpdir || die eend ## Déploiement @@ -224,7 +234,7 @@ __estack=$(qval "$__estack") __tlevel=$(qval "$__tlevel") export __interaction __estack __tlevel ${UTOOLS_LANG:+UTOOLS_LANG='$UTOOLS_LANG'; export UTOOLS_LANG -}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- MYHOST="$host" "$@")" +}$(qvals "./$archivename" ${tmproot:+--tmproot "$tmproot"} -- "${webapps[@]}" "$@")" eend fi done diff --git a/toinst b/toinst index dfb53a8..975ce08 100755 --- a/toinst +++ b/toinst @@ -166,6 +166,8 @@ function parse_tomcat_users() { action=deploy parse_tomcat_users= parse_server= +istmpdir= +tmpdir= config= tomcat_profile= catalina_base= @@ -187,6 +189,7 @@ args=( --help '$exit_with display_help' --private-parse-server '$action=parse; parse_server=1' --private-parse-tomcat-users '$action=parse; parse_tomcat_users=1' + --is-tmpdir '$istmpdir=1; tmpdir=.' -c:,--config: config= -C:,--config-profile: tomcat_profile= -d:,--catalina-base:,--catalina-home: catalina_base= @@ -371,21 +374,23 @@ if [ $# -eq 0 ]; then fi srcs=() +[ -n "$istmpdir" ] || ac_set_tmpdir tmpdir for src in "$@"; do - if [ -d "$src" ]; then - array_add srcs "$(abspath "$src")" - elif [ -f "$src" ]; then + if [ -f "$src" ] && is_archive "$src"; then setx waname=get_archive_appname "$src" - ac_set_tmpdir tmpdir - tmpdir="$tmpdir/$waname" - mkdir "$tmpdir" - if extract_archive "$src" "$tmpdir"; then - array_add srcs "$tmpdir" + wadir="$tmpdir/$waname" + mkdir "$wadir" + if extract_archive "$src" "$wadir"; then + array_add srcs "$wadir" else eerror "$src: erreur lors de l'extraction de l'archive" fi + elif [ -d "$src" ]; then + array_add srcs "$(abspath "$src")" + elif [ -e "$src" ]; then + eerror "$src: fichier invalide" else - eerror "$src: webapp introuvable" + eerror "$src: fichier ou répertoire introuvable" fi done [ ${#srcs[*]} -gt 0 -o -n "$fake" ] || die