diff --git a/dk b/dk index 824c72a..ed8e49f 100755 --- a/dk +++ b/dk @@ -295,31 +295,62 @@ OPTIONS build -g, --ug, --no-update-apps ne pas mettre à jour les dépôts dépendants. ces dépôts sont définis dans le fichier update-apps.conf qui a le format suivant: - DEFAULT_DEVEL_SRCDIR= - DEFAULT_ORIGIN= - DEFAULT_BRANCH= - DEFAULT_COMPOSER_ACTION= - PROFILE_CLEAN= # fonction de nettoyage spécifique au profil - CLEAN= # ou... fonction de nettoyage par défaut - 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 du dépôt en mode devel - 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_NAME= # nom du répertoire dest si checkout; par - # défaut prendre la valeur 'app' - 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' - app_BRANCH= # ou... branche par défaut - app_TYPE= # type de projet (composer|none) - app_AFTER_UPDATE=() # liste de commandes à lancer après le checkout - app_COMPOSER_ACTION= # action projet composer (install|update|none) - app_COMPOSER_ARGS=() # arguments de composer install|update + ## valeurs par défaut + DEFAULT_DEVEL_SRCDIR= # répertoire de base des dépôts + DEFAULT_BRANCH= # branche par défaut pour les checkouts + DEFAULT_ORIGIN= # origine par défaut des branches + CLEAN= # fonction de nettoyage + APPS=() # applications à mettre à jour + ## valeurs par défaut pour les projets composer + COMPOSER_ACTION= # action projet composer (install|update|none) + COMPOSER_ARGS=() # arguments de composer install|update + COMPOSER_PHP= + COMPOSER_PHP_MAX= + COMPOSER_IMAGE= + COMPOSER_CMD= + COMPOSER_SETUP= + ## pour chaque application définie dans APPS + {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='') + {app}_DEST= # répertoire dans lequel faire le checkout + # ou destination si synchro avec {app}_SRC + {app}_NAME= # nom du répertoire dest si checkout; par + # défaut prendre la valeur {app} + {app}_RSYNC_OPTS= # options de rsync si synchro avec {app}_SRC + # ou {app}_DEVEL_SRCDIR + {app}_BRANCH= # branche à sélectionner pour le checkout + {app}_ORIGIN= # origine de la branche à sélectionner + {app}_TYPE= # type de projet (composer|none) + {app}_AFTER_UPDATE=() # liste de commandes à lancer après le checkout + # valeurs pour les projets composer. ces valeurs remplacent le cas + # échéant celles définies dans le fichier .composer.conf du projet + {app}_COMPOSER_ACTION= + {app}_COMPOSER_ARGS=() + {app}_COMPOSER_PHP= + {app}_COMPOSER_PHP_MAX= + {app}_COMPOSER_IMAGE= + {app}_COMPOSER_CMD= + {app}_COMPOSER_SETUP= + Certaines valeurs peuvent être valuées selon le profil + {profile}_CLEAN= + {profile}_APPS=() + {profile}_COMPOSER_ACTION= + {profile}_COMPOSER_ARGS=() + {profile}_COMPOSER_PHP= + {profile}_COMPOSER_PHP_MAX= + {profile}_COMPOSER_IMAGE= + {profile}_COMPOSER_CMD= + {profile}_COMPOSER_SETUP= + {app}_{profile}_ORIGIN= + {app}_{profile}_BRANCH= + {app}_{profile}_COMPOSER_ACTION= + {app}_{profile}_COMPOSER_ARGS=() + {app}_{profile}_COMPOSER_PHP= + {app}_{profile}_COMPOSER_PHP_MAX= + {app}_{profile}_COMPOSER_IMAGE= + {app}_{profile}_COMPOSER_CMD= + {app}_{profile}_COMPOSER_SETUP= -u, --uu, --update-apps-only Ne faire que la mise à jour depuis les dépôts dépendants. -w, --ww, --update-apps-devel @@ -340,7 +371,7 @@ 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 + IMPORTANT: si SRC est définit, 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 @@ -446,19 +477,23 @@ function docker_parse_build_args() { sed -r 's/([^=]+)=(.*)/\1=\2; replace_build_args+=(--build-arg \1="$\1")/' } function docker_parse_env_args() { - [ -f .build.env ] && eval "$(docker_parse_build_args .build.env)" + [ -f .build.env ] && eval "$(docker_parse_build_args .build.env)" # DEPRECATED [ -f build.env ] && eval "$(docker_parse_build_args build.env)" - [ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && eval "$(docker_parse_build_args ".build.$PROFILE.env")" + [ -f build.env.local ] && eval "$(docker_parse_build_args build.env.local)" + [ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && eval "$(docker_parse_build_args ".build.$PROFILE.env")" # DEPRECATED [ -n "$PROFILE" -a -f "build.$PROFILE.env" ] && eval "$(docker_parse_build_args "build.$PROFILE.env")" + [ -n "$PROFILE" -a -f "build.$PROFILE.env.local" ] && eval "$(docker_parse_build_args "build.$PROFILE.env.local")" } function docker_set_env_args() { - [ -f .build.env ] && source ./.build.env + [ -f .build.env ] && source ./.build.env # DEPRECATED [ -f build.env ] && source ./build.env - [ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && source "./.build.$PROFILE.env" + [ -f build.env.local ] && source ./build.env.local + [ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && source "./.build.$PROFILE.env" # DEPRECATED [ -n "$PROFILE" -a -f "build.$PROFILE.env" ] && source "./build.$PROFILE.env" + [ -n "$PROFILE" -a -f "build.$PROFILE.env.local" ] && source "./build.$PROFILE.env.local" } function docker_check_name() { - [ -n "$NAME" ] || die "Vous devez définir NAME dans .build.env" + [ -n "$NAME" ] || die "Vous devez définir NAME dans build.env" if [ "$1" == set_container_name ]; then project_name="$NAME" @@ -754,8 +789,7 @@ function build_update_apps() { fi etitle "Mise à jour des dépendances" - local app var URL SRC DEVEL_SRCDIR DEST NAME have_RSYNC_OPTS RSYNC_OPTS ORIGIN BRANCH TYPE after_update after_updates composer_action - local -a composer_args + local app var URL SRC DEVEL_SRCDIR DEST NAME have_RSYNC_OPTS RSYNC_OPTS ORIGIN BRANCH TYPE after_update after_updates for app in "${APPS[@]}"; do etitle "$app" @@ -935,13 +969,27 @@ function build_update_apps() { estep "Type de dépôt: $TYPE" if [ "$TYPE" == composer ]; then + local cvname cvvalue + local composer_php composer_php_max composer_image composer_cmd composer_setup composer_action + local -a composer_vars composer_args + + for cvname in composer_php composer_php_max composer_image composer_cmd composer_setup; do + cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}" + [ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; } + [ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; } + [ -n "$cvvalue" ] || { cvvalue="${cvname^^}"; cvvalue="${!cvvalue}"; } + [ -n "$cvvalue" ] && composer_vars+=("${cvname^^}=$cvvalue") + done + composer_action="${var}_${PROFILE}_COMPOSER_ACTION"; composer_action="${!composer_action}" [ -n "$composer_action" ] || { composer_action="${var}_COMPOSER_ACTION"; composer_action="${!composer_action}"; } - [ -n "$composer_action" ] || composer_action="$DEFAULT_COMPOSER_ACTION" + [ -n "$composer_action" ] || { composer_action="${PROFILE}_COMPOSER_ACTION"; composer_action="${!composer_action}"; } + [ -n "$composer_action" ] || composer_action="$COMPOSER_ACTION" composer_args="${var}_${PROFILE}_COMPOSER_ARGS" is_defined "$composer_args" || composer_args="${var}_COMPOSER_ARGS" - is_defined "$composer_args" || composer_args="DEFAULT_COMPOSER_ARGS" + is_defined "$composer_args" || composer_args="${PROFILE}_COMPOSER_ARGS" + is_defined "$composer_args" || composer_args="COMPOSER_ARGS" composer_args="${composer_args}[@]"; composer_args=("${!composer_args}") if [ -z "$BUILD_UPDATE_DEVEL" ]; then @@ -955,7 +1003,7 @@ function build_update_apps() { setx cwd=pwd cd "$DEST" estep "Installation des dépendances composer" - auto_composer "$composer_action" "${composer_args[@]}" || { eend; return 1; } + auto_composer "${composer_vars[@]}" "$composer_action" "${composer_args[@]}" || { eend; return 1; } cd "$cwd" fi fi @@ -1826,7 +1874,7 @@ function auto_composer() { local COMPOSER_CMD= local COMPOSER_SETUP= [ -f .composer.conf ] && source ./.composer.conf - # les premiers arguments peuvent service à redéfinir les variables + # les premiers arguments peuvent servir à redéfinir les variables while [ $# -gt 0 ]; do case "$1" in COMPOSER_PHP=*) setv "$1"; shift;; @@ -1840,7 +1888,9 @@ function auto_composer() { done local use_image - if [ -n "$COMPOSER_PHP_MAX" -a "$COMPOSER_PHP_MAX" != none ]; then + if [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then + use_image=1 + elif [ -n "$COMPOSER_PHP_MAX" -a "$COMPOSER_PHP_MAX" != none ]; then # Vérifier la version de PHP php -r ' $version = $argv[1]; @@ -1856,8 +1906,6 @@ exit((PHP_VERSION_ID > $version)? 0: 1); elif [ -z "$COMPOSER_PHP" ]; then # pas de version minimum, tester simplement la valeur de COMPOSER_IMAGE [ "$COMPOSER_IMAGE" != none ] && use_image=1 - elif [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then - use_image=1 else # Vérifier la version de PHP php -r ' @@ -1966,7 +2014,7 @@ fi DEFAULT_PROFILE=devel # pour le moment ne pas lancer composer dans un container par défaut -DEFAULT_COMPOSER_IMAGE=none #docker.univ-reunion.fr/image/apache-php-myiccas-utils:d10 +DEFAULT_COMPOSER_IMAGE=none #docker.univ-reunion.fr/image/phpbuilder PROFILE= DM_ALIASES=() DM_PROFILES=()