From c147a0cef3eb05b56739886e86d72f640c48b2dc Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Thu, 23 Apr 2020 11:07:46 +0400 Subject: [PATCH 1/3] =?UTF-8?q?dk:=20possibilit=C3=A9=20de=20sp=C3=A9cifie?= =?UTF-8?q?r=20les=20options=20de=20rsync?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dk | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/dk b/dk index 43e7a17..fda926e 100755 --- a/dk +++ b/dk @@ -273,8 +273,11 @@ OPTIONS build PROFILE_APPS=() # ou... spécifique au profil 'PROFILE' app_URL= # url du dépôt app_DEVEL_SRCDIR= # répertoire source du dépôt en mode devel - app_SRC= # répertoire/fichier source (si URL pas renseigné) + app_SRC= # répertoire/fichier source (si URL='') app_DEST= # répertoire dans lequel faire le checkout + # ou destination si synchro avec app_SRC + app_RSYNC_OPTS= # options de rsync si synchro (avec app_SRC + # ou app_DEVEL_SRCDIR) app_PROFILE_ORIGIN= # origine spécifique au profil 'PROFILE' app_ORIGIN= # ou... origine par défaut de la branche app_PROFILE_BRANCH= # branche spécifique au profil 'PROFILE' @@ -324,8 +327,11 @@ VARIABLES de update-apps.conf projet. Les variables suivantes sont disponibles: URL= # url du dépôt DEVEL_SRCDIR= # répertoire source en mode devel - SRC= # répertoire/fichier source (si URL pas renseigné) + SRC= # répertoire/fichier source (si URL='') DEST= # répertoire dans lequel faire le checkout + # ou destination si URL='' + RSYNC_OPTS= # options de rsync si synchro avec SRC ou + # DEVEL_SRCDIR ORIGIN= # origine de la branche BRANCH= # branche sélectionnée dans le dépôt TYPE= # type de projet (composer|none) @@ -699,7 +705,7 @@ function build_update_apps() { fi etitle "Mise à jour des dépendances" - local app var URL SRC DEVEL_SRCDIR DEST ORIGIN BRANCH TYPE after_update after_updates composer_action + local app var URL SRC DEVEL_SRCDIR DEST have_RSYNC_OPTS RSYNC_OPTS ORIGIN BRANCH TYPE after_update after_updates composer_action for app in "${APPS[@]}"; do etitle "$app" @@ -720,6 +726,14 @@ function build_update_apps() { DEST="${var}_DEST"; DEST="${!DEST}" [ -n "$DEST" ] || DEST="$app/b" + if is_defined "${var}_RSYNC_OPTS"; then + have_RSYNC_OPTS=1 + RSYNC_OPTS="${var}_RSYNC_OPTS[@]"; RSYNC_OPTS=("${!RSYNC_OPTS}") + else + have_RSYNC_OPTS= + RSYNC_OPTS=() + fi + ORIGIN="${var}_${PROFILE}_ORIGIN"; ORIGIN="${!ORIGIN}" [ -n "$ORIGIN" ] || { ORIGIN="${var}_ORIGIN"; ORIGIN="${!ORIGIN}"; } [ -n "$ORIGIN" ] || ORIGIN="$DEFAULT_ORIGIN" @@ -736,7 +750,8 @@ function build_update_apps() { DEST="$DEST/$app" # synchronisation en mode devel - local -a rsync_opts; rsync_opts=(-a --delete --exclude .git/ --delete-excluded) + [ -n "$have_RSYNC_OPTS" ] || RSYNC_OPTS=(--delete --delete-excluded) + local -a rsync_opts; rsync_opts=(-a --exclude .git/ "${RSYNC_OPTS[@]}") estep "Synchro $DEVEL_SRCDIR --> $DEST" rsync "${rsync_opts[@]}" "$DEVEL_SRCDIR/" "$DEST" || { eend; return 1; } @@ -789,13 +804,15 @@ function build_update_apps() { elif [ -n "$SRC" ]; then if [ -d "$SRC" ]; then - local -a rsync_opts; rsync_opts=(-a --delete --exclude .git/ --delete-excluded) + [ -n "$have_RSYNC_OPTS" ] || RSYNC_OPTS=(--delete --delete-excluded) + local -a rsync_opts; rsync_opts=(-a --exclude .git/ "${RSYNC_OPTS[@]}") SRC="${SRC%/}/" DEST="${DEST%/}/" estep "Synchro $SRC --> $DEST" rsync "${rsync_opts[@]}" "$SRC" "$DEST" || { eend; return 1; } elif [ -f "$SRC" ]; then - local -a rsync_opts; rsync_opts=(-a) + [ -n "$have_RSYNC_OPTS" ] || RSYNC_OPTS=() + local -a rsync_opts; rsync_opts=(-a "${RSYNC_OPTS[@]}") if [ "${DEST%/}" != "$DEST" -o -d "$DEST" ]; then DEST="${DEST%/}/" estep "Synchro $SRC --> $DEST" From e2b2f492140588257816967e1755023f58124063 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 28 Apr 2020 16:41:47 +0400 Subject: [PATCH 2/3] =?UTF-8?q?dk:=20v=C3=A9rifier=20que=20le=20r=C3=A9per?= =?UTF-8?q?toire=20destination=20existe=20avant=20rsync?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dk | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/dk b/dk index fda926e..1bd7046 100755 --- a/dk +++ b/dk @@ -806,21 +806,39 @@ function build_update_apps() { if [ -d "$SRC" ]; then [ -n "$have_RSYNC_OPTS" ] || RSYNC_OPTS=(--delete --delete-excluded) local -a rsync_opts; rsync_opts=(-a --exclude .git/ "${RSYNC_OPTS[@]}") + SRC="${SRC%/}/" - DEST="${DEST%/}/" + DEST="${DEST%/}" + if [ ! -d "$DEST" ]; then + # s'assurer que le répertoire parent existe + mkdir -p "$(dirname -- "$DEST")" || { eend; return 1; } + fi + DEST="$DEST/" + estep "Synchro $SRC --> $DEST" rsync "${rsync_opts[@]}" "$SRC" "$DEST" || { eend; return 1; } + elif [ -f "$SRC" ]; then [ -n "$have_RSYNC_OPTS" ] || RSYNC_OPTS=() local -a rsync_opts; rsync_opts=(-a "${RSYNC_OPTS[@]}") - if [ "${DEST%/}" != "$DEST" -o -d "$DEST" ]; then - DEST="${DEST%/}/" - estep "Synchro $SRC --> $DEST" - rsync "${rsync_opts[@]}" "$SRC" "$DEST" || { eend; return 1; } - else - estep "Synchro $SRC --> $DEST" - rsync "${rsync_opts[@]}" "$SRC" "$DEST" || { eend; return 1; } + + if [ "${DEST%/}" != "$DEST" -a ! -d "$DEST" ]; then + # on demande à ce que DEST soit un répertoire mais il + # n'existe pas: le créer + DEST="${DEST%/}" + mkdir -p "$DEST" || { eend; return 1; } fi + + if [ -d "$DEST" ]; then + DEST="$DEST/" + elif [ ! -f "$DEST" ]; then + # la destination n'existe pas: s'assurer que le répertoire + # parent existe + mkdir -p "$(dirname -- "$DEST")" || { eend; return 1; } + fi + estep "Synchro $SRC --> $DEST" + rsync "${rsync_opts[@]}" "$SRC" "$DEST" || { eend; return 1; } + else eerror "$app: $SRC: répertoire/fichier introuvable" eend; return 1 From 9ed51b43f8ea690bd09f9b9f9f93d949f1afb290 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 28 Apr 2020 16:42:19 +0400 Subject: [PATCH 3/3] Init changelog & version 9.8.0 --- CHANGES.md | 5 +++++ VERSION.txt | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 233cc0d..cf97883 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,8 @@ +## Version 9.8.0 du 28/04/2020-16:42 + +* `e2b2f49` dk: vérifier que le répertoire destination existe avant rsync +* `c147a0c` dk: possibilité de spécifier les options de rsync + ## Version 9.7.0 du 17/04/2020-10:20 * `f4f9b69` dk: bug avec la synchro d'un fichier diff --git a/VERSION.txt b/VERSION.txt index a458a24..834eb3f 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -9.7.0 +9.8.0