dk: support répertoire/fichier source

This commit is contained in:
Jephté Clain 2020-04-14 12:24:16 +04:00
parent 1d7e2d0949
commit 9fad9924ef
1 changed files with 49 additions and 10 deletions

57
dk
View File

@ -272,7 +272,8 @@ OPTIONS build
APPS=() # applications à mettre à jour par défaut
PROFILE_APPS=() # ou... spécifique au profil 'PROFILE'
app_URL= # url du dépôt
app_DEVEL_SRCDIR= # répertoire source en mode devel
app_DEVEL_SRCDIR= # répertoire source du dépôt en mode devel
app_SRC= # répertoire/fichier source (si URL pas renseigné)
app_DEST= # répertoire dans lequel faire le checkout
app_PROFILE_ORIGIN= # origine spécifique au profil 'PROFILE'
app_ORIGIN= # ou... origine par défaut de la branche
@ -298,6 +299,11 @@ OPTIONS deploy
(c'est à dire ne pas utiliser l'option --with-registry-auth)
VARIABLES de update-apps.conf
SRC
répertoire/fichier source, si URL n'est pas défini. si ce chemin est
relatif, il doit être exprimé par rapport au répertoire du projet.
IMPORTANT: dans ce cas, DEST n'est pas le répertoire de base du
checkout, mais le répertoire destination pour la synchro
DEVEL_SRCDIR
répertoire source pour le mode devel. attention, il s'agit du répertoire
du projet, alors que DEFAULT_DEVEL_SRCDIR est le répertoire de base par
@ -318,6 +324,7 @@ 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é)
DEST= # répertoire dans lequel faire le checkout
ORIGIN= # origine de la branche
BRANCH= # branche sélectionnée dans le dépôt
@ -654,8 +661,8 @@ function build_update_apps() {
DEFAULT_ORIGIN="$UPDATE_APPS_ORIGIN"
[ -z "$DEFAULT_ORIGIN" ] && DEFAULT_ORIGIN=origin
DEFAULT_BRANCH="$UPDATE_APPS_BRANCH"
#XXX à terme, on déploiera la branche master en prod
[ -z "$DEFAULT_BRANCH" -a "$PROFILE" == prod ] && DEFAULT_BRANCH=develop #master
#XXX à terme, ne déployer en prod que la branche master
[ -z "$DEFAULT_BRANCH" -a "$PROFILE" == prod ] && DEFAULT_BRANCH=develop #XXX master
[ -z "$DEFAULT_BRANCH" ] && DEFAULT_BRANCH=develop
DEFAULT_DEVEL_SRCDIR="$HOME/wop/php"
DEFAULT_COMPOSER_ACTION=install
@ -685,17 +692,20 @@ function build_update_apps() {
fi
etitle "Mise à jour des dépendances"
local app var URL DEVEL_SRCDIR DEST ORIGIN BRANCH TYPE after_update after_updates composer_action
local app var URL SRC DEVEL_SRCDIR DEST ORIGIN BRANCH TYPE after_update after_updates composer_action
for app in "${APPS[@]}"; do
etitle "$app"
var="${app//-/_}"
URL="${var}_URL"; URL="${!URL}"
[ -n "$URL" ] || {
ewarn "$app: vous devez définir l'url"
if [ -z "$URL" ]; then
SRC="${var}_SRC"; SRC="${!SRC}"
if [ -z "$SRC" ]; then
ewarn "$app: vous devez définir ${var}_URL ou ${var}_SRC"
eend; return 1
}
fi
fi
DEVEL_SRCDIR="${var}_DEVEL_SRCDIR"; DEVEL_SRCDIR="${!DEVEL_SRCDIR}"
[ -n "$DEVEL_SRCDIR" ] || DEVEL_SRCDIR="$DEFAULT_DEVEL_SRCDIR/${URL##*/}"
@ -715,8 +725,9 @@ function build_update_apps() {
# calculer le type maintenant, on en a besoin pour le mode devel
TYPE="${var}_TYPE"; TYPE="${!TYPE}"
DEST="$DEST/$app"
if [ -n "$BUILD_UPDATE_DEVEL" ]; then
DEST="$DEST/$app"
# synchronisation en mode devel
local -a rsync_opts; rsync_opts=(-a --delete --exclude .git/ --delete-excluded)
estep "Synchro $DEVEL_SRCDIR --> $DEST"
@ -741,7 +752,9 @@ function build_update_apps() {
rsync "${rsync_opts[@]}" --exclude /vendor/ "$DEFAULT_DEVEL_SRCDIR/$pname/" "$depdir"
done
fi
else
elif [ -n "$URL" ]; then
DEST="$DEST/$app"
if [ -d "$DEST" -a -d "$DEST/.git" ]; then
# mise à jour
estep "Maj dépôt $URL:$BRANCH --> $DEST"
@ -758,6 +771,28 @@ function build_update_apps() {
git clone -o "$ORIGIN" -b "$BRANCH" "$URL" "$DEST" || { eend; return 1; }
fi
if [ -z "$TYPE" ]; then
# possible de détecter le type quand on a le projet
# en cas de maj ici, mettre à jour aussi le code ci-dessus et ci-dessous
if [ -f "$DEST/composer.json" ]; then TYPE=composer
else TYPE=none
fi
fi
elif [ -n "$SRC" ]; then
if [ -d "$SRC" ]; then
local -a rsync_opts; rsync_opts=(-a --delete --exclude .git/ --delete-excluded)
estep "Synchro $SRC/ --> $DEST"
rsync "${rsync_opts[@]}" "$SRC/" "$DEST/" || { eend; return 1; }
elif [ -f "$SRC" ]; then
local -a rsync_opts; rsync_opts=(-a)
estep "Synchro $SRC --> $DEST"
rsync "${rsync_opts[@]}" "$SRC" "$DEST/" || { eend; return 1; }
else
eerror "$app: $SRC: répertoire/fichier introuvable"
eend; return 1
fi
if [ -z "$TYPE" ]; then
# possible de détecter le type quand on a le projet
# en cas de maj ici, mettre à jour aussi le code ci-dessus
@ -765,6 +800,10 @@ function build_update_apps() {
else TYPE=none
fi
fi
else
# ne devrait pas se produire
die "ni URL ni SRC ne sont définis"
fi
after_updates="${var}_AFTER_UPDATE"