améliorer la prise en charge de dkbuild imbriqué

This commit is contained in:
Jephté Clain 2025-02-08 02:48:19 +04:00
parent 7611760c3c
commit e674b316c3
2 changed files with 54 additions and 9 deletions

55
dkbuild
View File

@ -719,6 +719,18 @@ quelle, avec la même syntaxe qu'en ligne de commande. L'intérêt de cette
commande est qu'on est assuré d'utiliser le même dkbuild que celui qui traite le commande est qu'on est assuré d'utiliser le même dkbuild que celui qui traite le
script de build courant. script de build courant.
Les variables DKBUILD_CMD_ARGS, DKBUILD_CONFIGS, DKBUILD_ENVS et DKBUILD_ARGS
peuvent être utilisées pour reprendre les valeurs spécifiées en ligne de
commande, e.g"'
dkbuild -c "${DKBUILD_CONFIGS[0]}" "${DKBUILD_CMD_ARGS[@]}"'"
La variable DKBUILD_CONFIGS contient les noms des fichiers de configuration
utilisés.
Les variables DKBUILD_ENVS et DKBUILD_ARGS sont indexées sur le nom des
variables (resp. arguments). Il est donc possible de reprendre une valeur
particulière, e.g"'
dkbuild -c "${DKBUILD_CONFIGS[0]}" -e "${DKBUILD_ENVS[myenv]}"'"
## composer -- gérer projet composer ## composer -- gérer projet composer
USAGE: composer DESTDIR [ACTION [PARAMS] [ARGS]] USAGE: composer DESTDIR [ACTION [PARAMS] [ARGS]]
@ -935,6 +947,10 @@ declare -A PROTECTED_VARS=(
[ENVIRON]=1 [ENVIRON]=1
[ARGS]=1 [ARGS]=1
[DEFAULTS]=1 [DEFAULTS]=1
[DKBUILD_CMD_ARGS]=1
[fill_DKBUILD_CONFIGS]=1 [DKBUILD_CONFIGS]=1
[fill_DKBUILD_ENVS]=1 [DKBUILD_ENVS]=1
[fill_DKBUILD_ARGS]=1 [DKBUILD_ARGS]=1
) )
SHARED_LOCALS1="local PROJDIR DKBUILD CONFIG" SHARED_LOCALS1="local PROJDIR DKBUILD CONFIG"
@ -969,6 +985,11 @@ SHARED_ARGS2=(
--arg: '$TMPARGS+=("$value_")' --arg: '$TMPARGS+=("$value_")'
) )
declare -a DKBUILD_CMD_ARGS
fill_DKBUILD_CONFIGS=; declare -a DKBUILD_CONFIGS
fill_DKBUILD_ENVS=; declare -A DKBUILD_ENVS
fill_DKBUILD_ARGS=; declare -A DKBUILD_ARGS
TFUNCTIONS=( TFUNCTIONS=(
# dkbuild # dkbuild
section note info debug section note info debug
@ -1158,32 +1179,38 @@ function ensure_projdir() {
setx CONFIG=abspath "$CONFIG" setx CONFIG=abspath "$CONFIG"
edebug "using config $CONFIG" edebug "using config $CONFIG"
else else
local config local config found
for config in ~/.dkbuild.env /etc/dkbuild.env; do for config in ~/.dkbuild.env /etc/dkbuild.env; do
if [ -f "$config" ]; then if [ -f "$config" ]; then
found=1
CONFIG="$config" CONFIG="$config"
edebug "using default config $CONFIG" edebug "using default config $CONFIG"
break break
fi fi
done done
[ -n "$found" ] || CONFIG=none
fi fi
} }
function load_dkbuild() { function load_dkbuild() {
local CONFIG="$CONFIG"
local dkbuildenv="$PROJDIR/$(basename "$DKBUILD").env" local dkbuildenv="$PROJDIR/$(basename "$DKBUILD").env"
cd "$PROJDIR" cd "$PROJDIR"
set_defaults dkbuild set_defaults dkbuild
if [ -n "$CONFIG" -a "$CONFIG" != none ]; then if [ -n "$CONFIG" ]; then
edebug "loading $CONFIG" if [ "$CONFIG" != none ]; then
source "$CONFIG" edebug "loading $CONFIG"
source "$CONFIG"
fi
[ -n "$fill_DKBUILD_CONFIGS" ] && DKBUILD_CONFIGS+=("$CONFIG")
fi fi
if [ -f "$dkbuildenv" ]; then if [ -f "$dkbuildenv" ]; then
edebug "loading $dkbuildenv" edebug "loading $dkbuildenv"
source "$dkbuildenv" source "$dkbuildenv"
[ -n "$fill_DKBUILD_CONFIGS" ] && DKBUILD_CONFIGS+=("$dkbuildenv")
fi fi
edebug "loading $DKBUILD" edebug "loading $DKBUILD"
source "$DKBUILD" source "$DKBUILD"
} }
@ -1368,7 +1395,13 @@ function define_functions_env() {
# Ne spécifier la valeur que si elle n'a pas déjà été définie # Ne spécifier la valeur que si elle n'a pas déjà été définie
_ENVIRON["$name"]="$value" _ENVIRON["$name"]="$value"
ENVIRON["$name"]="$value" ENVIRON["$name"]="$value"
[ -z "${PROTECTED_VARS[$name]}" ] && _setv "export $name" "$value" if [ -z "${PROTECTED_VARS[$name]}" ]; then
_setv "export $name" "$value"
if [ -n "$fill_DKBUILD_ENVS" ]; then
DKBUILD_ENVS["$name"]="$name=$value"
DKBUILD_CMD_ARGS+=(-e "$name=$value")
fi
fi
fi fi
done done
} }
@ -1401,6 +1434,10 @@ function define_functions_env() {
if [ "${ARGS[$name]-__UNDEFINED__}" == __UNDEFINED__ ]; then if [ "${ARGS[$name]-__UNDEFINED__}" == __UNDEFINED__ ]; then
# Ne spécifier la valeur que si elle n'a pas déjà été définie # Ne spécifier la valeur que si elle n'a pas déjà été définie
ARGS["$name"]="$value" ARGS["$name"]="$value"
if [ -n "$fill_DKBUILD_ARGS" ]; then
DKBUILD_ARGS["$name"]="$name=$value"
DKBUILD_CMD_ARGS+=(--arg "$name=$value")
fi
fi fi
done done
} }
@ -1610,10 +1647,10 @@ function resolve_dists_profiles() {
reset_functions reset_functions
define_functions_env define_functions_env
setenv "${TMPENVIRON[@]}" fill_DKBUILD_ENVS=1 setenv "${TMPENVIRON[@]}"
setarg "${TMPARGS[@]}" fill_DKBUILD_ARGS=1 setarg "${TMPARGS[@]}"
setarg "$@" setarg "$@"
load_dkbuild fill_DKBUILD_CONFIGS=1 load_dkbuild
} }
function foreach_dists_profiles() { function foreach_dists_profiles() {

View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
if runb; then
qvals dkbuild -c "${DKBUILD_CONFIGS[0]}" "${DKBUILD_CMD_ARGS[@]}"
fi
# pas de build automatique
AUTOBUILD=