support de la définition des aliases et des profils dans les répertoires de cluster

This commit is contained in:
Jephté Clain 2020-08-31 15:12:03 +04:00
parent 14beb13b7c
commit c5e15368a1
2 changed files with 76 additions and 9 deletions

77
dk
View File

@ -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

View File

@ -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