diff --git a/dk b/dk index ccf830b..f6d11a6 100755 --- a/dk +++ b/dk @@ -1849,6 +1849,70 @@ exit((PHP_VERSION_ID < $version)? 0: 1); ################################################################################ +function resolve_dm_alias() { + local alias dm + # chercher d'abord dans les définitions par défaut + for alias_dm in "${DM_ALIASES[@]}"; do + alias="${alias_dm%%:*}" + dm="${alias_dm#*:}" + if [ "$1" == "$alias" ]; then + echo "$dm" + return 0 + fi + done + # puis chercher dans les répertoires de cluster + local clusterdir DM_ALIASES + for clusterdir in "${CLUSTERDIRS[@]}"; do + DM_ALIASES=() + [ -f "$clusterdir/0config/configure.conf" ] || continue + source "$clusterdir/0config/configure.conf" + for alias_dm in "${DM_ALIASES[@]}"; do + alias="${alias_dm%%:*}" + dm="${alias_dm#*:}" + if [ "$1" == "$alias" ]; then + echo "$dm" + return 0 + fi + done + done + # sinon, laisser en l'état + echo "$1" + return 1 +} + +function resolve_dm_profile() { + local dm profile + # chercher d'abord dans les définitions par défaut + for dm_profile in "${DM_PROFILES[@]}"; do + dm="${dm_profile%%*:}" + profile="${dm_profile#:*}" + if [ "$1" == "$dm" ]; then + echo "$profile" + return 0 + fi + done + # puis chercher dans les répertoires de cluster + local clusterdir DM_PROFILES + for clusterdir in "${CLUSTERDIRS[@]}"; do + DM_PROFILES=() + [ -f "$clusterdir/0config/configure.conf" ] || continue + source "$clusterdir/0config/configure.conf" + for dm_profile in "${DM_PROFILES[@]}"; do + dm="${dm_profile%%*:}" + profile="${dm_profile#:*}" + if [ "$1" == "$dm" ]; then + echo "$profile" + return 0 + fi + done + done + # sinon, afficher le profil par défaut + echo "$DEFAULT_PROFILE" + return 1 +} + +################################################################################ + # support limité docker / podman if progexists docker; then DOCKER=docker elif progexists podman; then DOCKER=podman @@ -1859,7 +1923,9 @@ 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:d9 PROFILE= +DM_ALIASES=() DM_PROFILES=() +CLUSTERDIRS=() set_defaults dk export PROFILE @@ -1907,6 +1973,7 @@ parse_args "$@"; set -- "${args[@]}" progexists docker-machine && DM_AVAILABLE=1 || DM_AVAILABLE= if [ -n "$DM_SET_MACHINE" ]; then [ -n "$DM_AVAILABLE" ] || die "docker-machine n'est pas disponible" + setx DM_SET_MACHINE=resolve_dm_alias "$DM_SET_MACHINE" [ "$DM_SET_MACHINE" == - ] && DM_SET_MACHINE=-u setx dm_env=docker-machine env "$DM_SET_MACHINE" || die eval "$dm_env" @@ -1975,15 +2042,7 @@ if [ -n "$SELECT_MACHINE" ]; then fi if [ -n "$DM_AVAILABLE" ]; then - found= - for dm_profile in "${DM_PROFILES[@]}"; do - splitpair "$dm_profile" dm profile - if [ "$dm" == "$DOCKER_MACHINE_NAME" ]; then - DEFAULT_PROFILE="$profile" - found=1 - break - fi - done + setx DEFAULT_PROFILE=resolve_dm_profile "$DOCKER_MACHINE_NAME" && found=1 || found= if [ -n "$DM_SET_MACHINE" -a -z "$PROFILE" -a -z "$found" ]; then ewarn "\ Aucun profil n'a été défini pour $DM_SET_MACHINE dans ~/etc/default/dk diff --git a/lib/default/dk b/lib/default/dk index 375b22f..3bdacea 100644 --- a/lib/default/dk +++ b/lib/default/dk @@ -3,8 +3,16 @@ # Profil par défaut #PROFILE=prod +# Aliases pour docker-machine +#DM_ALIASES=(alias:name) + # Profiles pour docker-machine #DM_PROFILES=(name:profile...) +# Répertoires de gestion de cluster. Dans chacun de ces répertoires, le fichier +# 0config/configure.conf est sourcé à la recherche de définitions de profils et +# d'aliases +#CLUSTERDIRS=(~/wop/containers/*.univ.run) + # Image à utiliser pour lancer composer #COMPOSER_IMAGE=docker.univ-reunion.fr/image/apache-php-myiccas-utils:d10