From 5a06851b0f34c8c638bf0e428b889a0a843b6000 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Sat, 18 Nov 2023 08:39:28 +0400 Subject: [PATCH] =?UTF-8?q?dkbuild:=20support=20profil=20par=20d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dkbuild | 21 +++++++++++++++++++-- lib/dkbuild/dot-dkbuild.env | 7 +------ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/dkbuild b/dkbuild index c4f4f76..1651d8c 100755 --- a/dkbuild +++ b/dkbuild @@ -260,6 +260,11 @@ Si le profil sélectionné par l'utilisateur n'est pas dans la liste fournie, le script s'arrête avec une erreur. Le premier profil listé est spécial: c'est le profil par défaut. +La commande 'default_profile' permet de spécifier un profil par défaut à +utiliser, exactement comme s'il avait été spécifié avec l'option --profile. +Cette commande est particulièrement appropriée pour le fichier ~/.dkbuild.env +s'il s'agit de définir le profil à utiliser sur un hôte. + La commande 'profile' permet de tester si le profil spécifié en argument a été sélectionné par l'utilisateur. L'argument 'DEFAULT' permet de tester le profil par défaut. @@ -289,8 +294,8 @@ la plus récente. Si les distributions sont utilisées avec des versions, alors c'est une erreur de spécifier une version dans le profil -Note: 'setprofiles' ne doit être utilisé qu'une seule fois. Les invocations -suivantes sont ignorées. +Note: 'setprofiles' et 'default_profile' ne peuvent être utilisés qu'une seule +fois. Les invocations suivantes sont ignorées. ## Versions #################################################################### @@ -510,6 +515,8 @@ USAGE: ## setprofiles -- spécifier les profils valides +## default_profile -- spécifier le profil à utiliser si aucun profil n'est sélectionné + ## profile -- vérifier le profil courant ## setversion -- spécifier la version par défaut @@ -892,6 +899,7 @@ declare -A PROTECTED_VARS=( [SETDISTS]=1 [SETPROFILES_DONE]=1 [SETPROFILES]=1 + [DEFAULT_PROFILE]=1 [SETVERSION_DONE]=1 [SETVERSION]=1 [AUTOBUILD]=1 @@ -937,6 +945,7 @@ TFUNCTIONS=( section note info debug setdists dist setprofiles profile + default_profile setversion version setenv resetenv setarg resetarg @@ -1432,6 +1441,7 @@ function resolve_dists_profiles() { SETDISTS=() SETPROFILES_DONE= SETPROFILES=() + DEFAULT_PROFILE= SETVERSION_DONE= SETVERSION= AUTOBUILD=1 @@ -1446,6 +1456,9 @@ function resolve_dists_profiles() { SETPROFILES=("$@") SETPROFILES_DONE=1 } + function default_profile() { + [ -n "$DEFAULT_PROFILE" ] || DEFAULT_PROFILE="$1" + } function build() { AUTOBUILD= } @@ -1454,6 +1467,10 @@ function resolve_dists_profiles() { } load_dkbuild + if [ -z "$PROFILE" -a -z "$ALL_PROFILES" -a -n "$DEFAULT_PROFILE" ]; then + enote "Auto-sélection du profil $DEFAULT_PROFILE" + PROFILE="$DEFAULT_PROFILE" + fi local MANUAL_SETPROFILES= if [ -z "$SETPROFILES_DONE" -a -n "$PROFILE" ]; then # Si l'utilisateur spécifie un profil mais qu'aucun profil n'a été diff --git a/lib/dkbuild/dot-dkbuild.env b/lib/dkbuild/dot-dkbuild.env index 1a8bd57..a6f4870 100644 --- a/lib/dkbuild/dot-dkbuild.env +++ b/lib/dkbuild/dot-dkbuild.env @@ -1,10 +1,5 @@ # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 -_valid_profiles=( - prod test devel - jclain -) -_default_profile=devel -[ -z "$DKBUILD_NO_SETPROFILES" ] && setprofiles "$_default_profile" "${_valid_profiles[@]}" +default_profile "${DKBUILD_PROFILE:-devel}" if profile jclain; then setenv REGISTRY=docker.jclain.fr