Intégration de la branche release-11.1.0
This commit is contained in:
commit
9d8e3c53d1
22
CHANGES.md
22
CHANGES.md
|
@ -1,3 +1,25 @@
|
||||||
|
## Version 11.1.0 du 01/02/2024-20:59
|
||||||
|
|
||||||
|
* `8570d12` pff: les répertoires liés peuvent contenir des fichiers
|
||||||
|
* `5d6c6b4` synchroniser pff et nulib/pff
|
||||||
|
* `90bda71` pff: support des répertoires liés
|
||||||
|
* `7d7b88a` autoriser les feature branches qui commencent par wip/
|
||||||
|
* `5cc1826` dk et dkbuild: support .composer.yaml et setup_image
|
||||||
|
* `0bf0f48` dk: support ~/.dkbuild.env
|
||||||
|
* `b818e11` dkbuild: ajout de --plain
|
||||||
|
* `ad14de3` dkbuild: configuration profil prod par défaut
|
||||||
|
* `54a5b54` Sscreen: support des cas où screen n'est pas dans le PATH
|
||||||
|
* `5a06851` dkbuild: support profil par défaut
|
||||||
|
* `a855b04` dkbuild: les versions de profil sont ordonnées comme les versions de distribution
|
||||||
|
* `e531553` dkbuild: sans --all-profiles, ne build que dans le profil par défaut
|
||||||
|
* `db1467b` bug
|
||||||
|
* `3123d8e` dkbuild: mappings par défaut
|
||||||
|
* `d9b1485` charnière entre java 8 et java 11
|
||||||
|
* `744a3fa` dkbuild: indiquer si la version de Java demandée n'est pas trouvée
|
||||||
|
* `2803868` dkbuild: marquer plus d'action comme étant du build
|
||||||
|
* `4f7bc3f` dkbuild: bug avec -u seul
|
||||||
|
* `8cdc3cb` modifs.mineures sans commentaires
|
||||||
|
|
||||||
## Version 11.0.0 du 05/09/2023-14:29
|
## Version 11.0.0 du 05/09/2023-14:29
|
||||||
|
|
||||||
* `ddfbc00` maj des images par défaut dk et dkbuild
|
* `ddfbc00` maj des images par défaut dk et dkbuild
|
||||||
|
|
18
Sscreen
18
Sscreen
|
@ -18,15 +18,25 @@ function __ask() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function __auto_screen() {
|
function __auto_screen() {
|
||||||
|
# Si on est déjà dans screen, ne rien faire
|
||||||
|
[ -z "$STY" ] || return
|
||||||
|
|
||||||
# Si screen pas installé, ne rien faire
|
# Si screen pas installé, ne rien faire
|
||||||
if [ -z "$(which screen 2>/dev/null)" ]; then
|
local dir screen="$(which screen 2>/dev/null)"
|
||||||
|
if [ -z "$screen" ]; then
|
||||||
|
for dir in /usr/local/bin /opt/bin /usr/bin /bin; do
|
||||||
|
if [ -x "$dir/screen" ]; then
|
||||||
|
screen="$dir/screen"
|
||||||
|
PATH="$PATH:$dir"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -z "$screen" ]; then
|
||||||
echo "${COULEUR_JAUNE}WARNING${COULEUR_NORMALE} screen introuvable. une session bash classique sera lancée"
|
echo "${COULEUR_JAUNE}WARNING${COULEUR_NORMALE} screen introuvable. une session bash classique sera lancée"
|
||||||
exec /bin/bash -l
|
exec /bin/bash -l
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Si on est déjà dans screen, ne rien faire
|
|
||||||
[ -z "$STY" ] || return
|
|
||||||
|
|
||||||
# corriger TERM pour les vieilles versions de Linux
|
# corriger TERM pour les vieilles versions de Linux
|
||||||
case "$TERM" in
|
case "$TERM" in
|
||||||
xterm*) TERM=xterm;;
|
xterm*) TERM=xterm;;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
11.0.0
|
11.1.0
|
||||||
|
|
125
dk
125
dk
|
@ -230,6 +230,7 @@ COMMANDES
|
||||||
spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
||||||
Ce paramétrage est utilisé pour par exemple installer certains
|
Ce paramétrage est utilisé pour par exemple installer certains
|
||||||
packages nécessaire au projet.
|
packages nécessaire au projet.
|
||||||
|
* COMPOSER_SETUP_IMAGE -- nom final de l'image pour COMPOSER_SETUP
|
||||||
La commande 'rshell' est une extension qui lance un shell bash au lieu
|
La commande 'rshell' est une extension qui lance un shell bash au lieu
|
||||||
de lancer la commande composer, ce qui permet de faire des opérations
|
de lancer la commande composer, ce qui permet de faire des opérations
|
||||||
plus complexes si le besoin s'en fait sentir. NB: le shell est lancé
|
plus complexes si le besoin s'en fait sentir. NB: le shell est lancé
|
||||||
|
@ -267,6 +268,7 @@ COMMANDES
|
||||||
spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
||||||
Ce paramétrage est utilisé pour par exemple installer certains
|
Ce paramétrage est utilisé pour par exemple installer certains
|
||||||
packages nécessaire au projet.
|
packages nécessaire au projet.
|
||||||
|
* MAVEN_SETUP_IMAGE -- nom final de l'image pour MAVEN_SETUP
|
||||||
La commande 'rshell' est une extension qui lance un shell bash au lieu
|
La commande 'rshell' est une extension qui lance un shell bash au lieu
|
||||||
de lancer la commande mvn, ce qui permet de faire des opérations
|
de lancer la commande mvn, ce qui permet de faire des opérations
|
||||||
plus complexes si le besoin s'en fait sentir. NB: le shell est lancé
|
plus complexes si le besoin s'en fait sentir. NB: le shell est lancé
|
||||||
|
@ -1083,10 +1085,10 @@ function build_update_apps() {
|
||||||
estep "Type de dépôt: $TYPE"
|
estep "Type de dépôt: $TYPE"
|
||||||
if [ "$TYPE" == composer ]; then
|
if [ "$TYPE" == composer ]; then
|
||||||
local cvname cvvalue
|
local cvname cvvalue
|
||||||
local composer_php composer_php_max composer_image composer_cmd composer_setup composer_action
|
local composer_php composer_php_max composer_image composer_cmd composer_setup composer_setup_image composer_action
|
||||||
local -a composer_vars composer_args
|
local -a composer_vars composer_args
|
||||||
|
|
||||||
for cvname in composer_php composer_php_max composer_image composer_cmd composer_setup; do
|
for cvname in composer_php composer_php_max composer_image composer_cmd composer_setup composer_setup_image; do
|
||||||
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
|
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
|
||||||
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||||
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||||
|
@ -1122,10 +1124,10 @@ function build_update_apps() {
|
||||||
fi
|
fi
|
||||||
elif [ "$TYPE" == maven ]; then
|
elif [ "$TYPE" == maven ]; then
|
||||||
local cvname cvvalue
|
local cvname cvvalue
|
||||||
local maven_java maven_image maven_cmd maven_setup maven_action
|
local maven_java maven_image maven_cmd maven_setup maven_setup_image maven_action
|
||||||
local -a maven_vars maven_args
|
local -a maven_vars maven_args
|
||||||
|
|
||||||
for cvname in maven_java maven_image maven_cmd maven_setup; do
|
for cvname in maven_java maven_image maven_cmd maven_setup maven_setup_image; do
|
||||||
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
|
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
|
||||||
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||||
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
|
||||||
|
@ -1979,6 +1981,7 @@ function default_docker_composer() {
|
||||||
-e group="$group"
|
-e group="$group"
|
||||||
-e projdir="$projdir"
|
-e projdir="$projdir"
|
||||||
-e setup="$COMPOSER_SETUP"
|
-e setup="$COMPOSER_SETUP"
|
||||||
|
-e setup_image="$COMPOSER_SETUP_IMAGE"
|
||||||
-e composer="$COMPOSER_CMD"
|
-e composer="$COMPOSER_CMD"
|
||||||
-e args="$args"
|
-e args="$args"
|
||||||
)
|
)
|
||||||
|
@ -2008,35 +2011,36 @@ fi
|
||||||
|
|
||||||
if [ -n "$COMPOSER_SETUP" ]; then
|
if [ -n "$COMPOSER_SETUP" ]; then
|
||||||
# lancement dans un container docker à préparer
|
# lancement dans un container docker à préparer
|
||||||
local NAME project_name container_name dkid
|
local NAME setup_image project_name container_name dkid
|
||||||
if [ -f docker-compose.yml ]; then
|
if [ -f docker-compose.yml ]; then
|
||||||
compose_set_project_name set_container_name
|
compose_set_project_name set_container_name
|
||||||
else
|
else
|
||||||
NAME="$(basename -- "$(pwd)")"
|
NAME="$(basename -- "$(pwd)")"
|
||||||
docker_check_name set_container_name
|
docker_check_name set_container_name
|
||||||
fi
|
fi
|
||||||
container_name="dk_composer_${container_name}"
|
setup_image="$COMPOSER_SETUP_IMAGE"
|
||||||
|
[ -n "$setup_image" ] || setup_image="dk_composer_${container_name}_image"
|
||||||
|
|
||||||
# vérifier l'existence de l'image
|
# vérifier l'existence de l'image
|
||||||
setx dkid=docker image ls --format '{{.ID}}' "${container_name}_image"
|
setx dkid=docker image ls --format '{{.ID}}' "$setup_image"
|
||||||
|
|
||||||
# créer le container le cas échéant
|
# créer le container le cas échéant
|
||||||
if [ -z "$dkid" ]; then
|
if [ -z "$dkid" ]; then
|
||||||
estep "Création du container $container_name avec l'image $COMPOSER_IMAGE"
|
estep "Création de l'image $setup_image à partir de $COMPOSER_IMAGE"
|
||||||
cmd=(
|
cmd=(
|
||||||
"$DOCKER" create -it --name "${container_name}_ct"
|
"$DOCKER" create -it --name "${setup_image}_tmpct"
|
||||||
"${basecmd[@]}"
|
"${basecmd[@]}"
|
||||||
"$COMPOSER_IMAGE"
|
"$COMPOSER_IMAGE"
|
||||||
bash -c "$setupscript"
|
bash -c "$setupscript"
|
||||||
)
|
)
|
||||||
setx dkid="${cmd[@]}" || return 1
|
setx dkid="${cmd[@]}" || return 1
|
||||||
"$DOCKER" container start -ai "$dkid" || return 1
|
"$DOCKER" container start -ai "$dkid" || return 1
|
||||||
"$DOCKER" container commit "$dkid" "${container_name}_image" || return 1
|
"$DOCKER" container commit "$dkid" "$setup_image" || return 1
|
||||||
"$DOCKER" container rm "$dkid" || return 1
|
"$DOCKER" container rm "$dkid" || return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# prendre comme image le container créé
|
# prendre comme image le container créé
|
||||||
COMPOSER_IMAGE="${container_name}_image"
|
COMPOSER_IMAGE="$setup_image"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmd=(
|
cmd=(
|
||||||
|
@ -2062,7 +2066,19 @@ function auto_composer() {
|
||||||
local COMPOSER_MACHINE=-u
|
local COMPOSER_MACHINE=-u
|
||||||
local COMPOSER_CMD=
|
local COMPOSER_CMD=
|
||||||
local COMPOSER_SETUP=
|
local COMPOSER_SETUP=
|
||||||
[ -f .composer.conf ] && source ./.composer.conf
|
local COMPOSER_SETUP_IMAGE=
|
||||||
|
if [ -f .composer.yaml ]; then
|
||||||
|
local registry
|
||||||
|
eval "$(<.composer.yaml grep ^composer_ |
|
||||||
|
sed 's/^composer_php_min: /COMPOSER_PHP=/
|
||||||
|
s/^composer_php_max: /COMPOSER_PHP_MAX=/
|
||||||
|
s/^composer_registry: /registry=/
|
||||||
|
s/^composer_image: \(.*\)/COMPOSER_IMAGE="${registry:-$REGISTRY}\/\1"/
|
||||||
|
s/^composer_setup: /COMPOSER_SETUP=/
|
||||||
|
s/^composer_setup_image: /COMPOSER_SETUP_IMAGE=/')"
|
||||||
|
elif [ -f .composer.conf ]; then
|
||||||
|
source ./.composer.conf
|
||||||
|
fi
|
||||||
# les premiers arguments peuvent servir à redéfinir les variables
|
# les premiers arguments peuvent servir à redéfinir les variables
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
@ -2204,6 +2220,7 @@ function default_docker_maven() {
|
||||||
-e group="$group"
|
-e group="$group"
|
||||||
-e projdir="$projdir"
|
-e projdir="$projdir"
|
||||||
-e setup="$MAVEN_SETUP"
|
-e setup="$MAVEN_SETUP"
|
||||||
|
-e setup_image="$MAVEN_SETUP_IMAGE"
|
||||||
-e maven="$MAVEN_CMD"
|
-e maven="$MAVEN_CMD"
|
||||||
-e args="$args"
|
-e args="$args"
|
||||||
${MAVEN_JAVA:+-e JAVA="$MAVEN_JAVA"}
|
${MAVEN_JAVA:+-e JAVA="$MAVEN_JAVA"}
|
||||||
|
@ -2228,35 +2245,36 @@ cd "$projdir"
|
||||||
|
|
||||||
if [ -n "$MAVEN_SETUP" ]; then
|
if [ -n "$MAVEN_SETUP" ]; then
|
||||||
# lancement dans un container docker à préparer
|
# lancement dans un container docker à préparer
|
||||||
local NAME project_name container_name dkid
|
local NAME setup_image project_name container_name dkid
|
||||||
if [ -f docker-compose.yml ]; then
|
if [ -f docker-compose.yml ]; then
|
||||||
compose_set_project_name set_container_name
|
compose_set_project_name set_container_name
|
||||||
else
|
else
|
||||||
NAME="$(basename -- "$(pwd)")"
|
NAME="$(basename -- "$(pwd)")"
|
||||||
docker_check_name set_container_name
|
docker_check_name set_container_name
|
||||||
fi
|
fi
|
||||||
container_name="dk_maven_${container_name}"
|
setup_image="$MAVEN_SETUP_IMAGE"
|
||||||
|
[ -n "$setup_image" ] || setup_image="dk_maven_${container_name}_image"
|
||||||
|
|
||||||
# vérifier l'existence de l'image
|
# vérifier l'existence de l'image
|
||||||
setx dkid=docker image ls --format '{{.ID}}' "${container_name}_image"
|
setx dkid=docker image ls --format '{{.ID}}' "$setup_image"
|
||||||
|
|
||||||
# créer le container le cas échéant
|
# créer le container le cas échéant
|
||||||
if [ -z "$dkid" ]; then
|
if [ -z "$dkid" ]; then
|
||||||
estep "Création du container $container_name avec l'image $MAVEN_IMAGE"
|
estep "Création de l'image $setup_image à partir de $MAVEN_IMAGE"
|
||||||
cmd=(
|
cmd=(
|
||||||
"$DOCKER" create -it --name "${container_name}_ct"
|
"$DOCKER" create -it --name "${setup_image}_tmpct"
|
||||||
"${basecmd[@]}"
|
"${basecmd[@]}"
|
||||||
"$MAVEN_IMAGE"
|
"$MAVEN_IMAGE"
|
||||||
bash -c "$setupscript"
|
bash -c "$setupscript"
|
||||||
)
|
)
|
||||||
setx dkid="${cmd[@]}" || return 1
|
setx dkid="${cmd[@]}" || return 1
|
||||||
"$DOCKER" container start -ai "$dkid" || return 1
|
"$DOCKER" container start -ai "$dkid" || return 1
|
||||||
"$DOCKER" container commit "$dkid" "${container_name}_image" || return 1
|
"$DOCKER" container commit "$dkid" "$setup_image" || return 1
|
||||||
"$DOCKER" container rm "$dkid" || return 1
|
"$DOCKER" container rm "$dkid" || return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# prendre comme image le container créé
|
# prendre comme image le container créé
|
||||||
MAVEN_IMAGE="${container_name}_image"
|
MAVEN_IMAGE="$setup_image"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmd=(
|
cmd=(
|
||||||
|
@ -2281,6 +2299,7 @@ function auto_maven() {
|
||||||
local MAVEN_MACHINE=-u
|
local MAVEN_MACHINE=-u
|
||||||
local MAVEN_CMD=
|
local MAVEN_CMD=
|
||||||
local MAVEN_SETUP=
|
local MAVEN_SETUP=
|
||||||
|
local MAVEN_SETUP_IMAGE=
|
||||||
[ -f .maven.conf ] && source ./.maven.conf
|
[ -f .maven.conf ] && source ./.maven.conf
|
||||||
# les premiers arguments peuvent servir à redéfinir les variables
|
# les premiers arguments peuvent servir à redéfinir les variables
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
|
@ -2413,21 +2432,6 @@ fi
|
||||||
|
|
||||||
[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose)
|
[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose)
|
||||||
|
|
||||||
DEFAULT_PROFILE=devel
|
|
||||||
case "$PROFILE" in
|
|
||||||
jclain)
|
|
||||||
REGISTRY=docker.jclain.fr
|
|
||||||
PRIVAREG=docker.jclain.fr
|
|
||||||
;;
|
|
||||||
devel)
|
|
||||||
REGISTRY=docker.devel.self
|
|
||||||
PRIVAREG=docker.devel.self
|
|
||||||
;;
|
|
||||||
prod|test|*)
|
|
||||||
REGISTRY=pubdocker.univ-reunion.fr
|
|
||||||
PRIVAREG=pridocker.univ-reunion.fr
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
PROFILE=
|
PROFILE=
|
||||||
DM_ALIASES=()
|
DM_ALIASES=()
|
||||||
DM_PROFILES=()
|
DM_PROFILES=()
|
||||||
|
@ -2435,20 +2439,55 @@ CLUSTERDIRS=()
|
||||||
DEFAULT_DEVEL_SRCDIR="$HOME/wop"
|
DEFAULT_DEVEL_SRCDIR="$HOME/wop"
|
||||||
COMPOSER_DEVEL_SRCDIR="$HOME/wop/php"
|
COMPOSER_DEVEL_SRCDIR="$HOME/wop/php"
|
||||||
MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
|
MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
|
||||||
DEFAULT_COMPOSER_IMAGE="$REGISTRY/image/phpbuilder:d11"
|
DEFAULT_COMPOSER_IMAGE=
|
||||||
DEFAULT_MAVEN_IMAGE="$REGISTRY/image/javabuilder:d11"
|
DEFAULT_MAVEN_IMAGE=
|
||||||
DEFAULT_HOST_MAPPINGS=()
|
DEFAULT_HOST_MAPPINGS=()
|
||||||
prod_HOST_MAPPINGS=(
|
|
||||||
pridocker.univ-reunion.fr:10.85.1.56
|
|
||||||
pubdocker.univ-reunion.fr:10.85.1.57
|
|
||||||
repos.univ-reunion.fr:10.85.1.57
|
|
||||||
git.univ-reunion.fr:10.85.1.55
|
|
||||||
)
|
|
||||||
test_HOST_MAPPINGS=("${prod_HOST_MAPPINGS[@]}")
|
|
||||||
set_defaults dk
|
set_defaults dk
|
||||||
export PROFILE
|
export PROFILE
|
||||||
|
|
||||||
|
DEFAULT_PROFILE=devel
|
||||||
|
REGISTRY=
|
||||||
HOST_MAPPINGS=()
|
HOST_MAPPINGS=()
|
||||||
|
if [ -f ~/.dkbuild.env ]; then
|
||||||
|
function default_profile() {
|
||||||
|
DEFAULT_PROFILE="$1"
|
||||||
|
}
|
||||||
|
function profile() {
|
||||||
|
local profile
|
||||||
|
for profile in "$@"; do
|
||||||
|
[ "$profile" == "$DEFAULT_PROFILE" ] && return 0
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
function setenv() {
|
||||||
|
eval "export $1"
|
||||||
|
}
|
||||||
|
function default() {
|
||||||
|
local command="$1"; shift
|
||||||
|
local nv n v
|
||||||
|
case "$command" in
|
||||||
|
docker)
|
||||||
|
for nv in "$@"; do
|
||||||
|
[[ "$nv" == *=* ]] || continue
|
||||||
|
n="${nv%%=*}"
|
||||||
|
v="${nv#*=}"
|
||||||
|
case "$n" in
|
||||||
|
host-mappings)
|
||||||
|
read -a nv <<<"$v"
|
||||||
|
for v in "${ns[@]}"; do
|
||||||
|
HOST_MAPPINGS+=("$v")
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
source ~/.dkbuild.env
|
||||||
|
fi
|
||||||
|
[ -n "$REGISTRY" ] || REGISTRY=pubdocker.univ-reunion.fr
|
||||||
|
[ -n "$DEFAULT_COMPOSER_IMAGE" ] || DEFAULT_COMPOSER_IMAGE="$REGISTRY/image/php:d11"
|
||||||
|
[ -n "$DEFAULT_MAVEN_IMAGE" ] || DEFAULT_MAVEN_IMAGE="$REGISTRY/image/javabuilder:d11"
|
||||||
|
|
||||||
chdir=
|
chdir=
|
||||||
CONFIG=
|
CONFIG=
|
||||||
|
|
178
dkbuild
178
dkbuild
|
@ -103,6 +103,8 @@ $scriptname build [OPTIONS] [BUILDVARS...]
|
||||||
-E, --dtest
|
-E, --dtest
|
||||||
--devel
|
--devel
|
||||||
Spécifier le profil dans lequel construire l'image
|
Spécifier le profil dans lequel construire l'image
|
||||||
|
--all-profiles
|
||||||
|
Construire l'image dans tous les profils définis
|
||||||
|
|
||||||
-e, --env VAR=VALUE
|
-e, --env VAR=VALUE
|
||||||
Spécifier la valeur d'une variable d'environnement. Cette valeur
|
Spécifier la valeur d'une variable d'environnement. Cette valeur
|
||||||
|
@ -142,6 +144,8 @@ $scriptname build [OPTIONS] [BUILDVARS...]
|
||||||
Construire les images
|
Construire les images
|
||||||
--no-cache
|
--no-cache
|
||||||
Ne pas utiliser le cache lors du build
|
Ne pas utiliser le cache lors du build
|
||||||
|
--plain-output
|
||||||
|
Afficher la sortie complète des containers lors du build
|
||||||
-U, --pull-image
|
-U, --pull-image
|
||||||
Essayer de récupérer une version plus récente de l'image source
|
Essayer de récupérer une version plus récente de l'image source
|
||||||
-p, --push-image
|
-p, --push-image
|
||||||
|
@ -178,8 +182,9 @@ $scriptname mvn DESTDIR [ACTION [PARAMS] [ARGS]]
|
||||||
$scriptname dump [OPTIONS]
|
$scriptname dump [OPTIONS]
|
||||||
afficher les valeurs des variables
|
afficher les valeurs des variables
|
||||||
|
|
||||||
Les options --machine, --projdir, --config, --dist, --profile, --env et
|
Les options suivantes ont la même signification que pour l'action build:
|
||||||
--arg ont la même signification que pour l'action build"
|
--machine, --projdir, --config, --dist, --profile, --all-profiles, --env,
|
||||||
|
--arg"
|
||||||
}
|
}
|
||||||
|
|
||||||
function display_help_dkbuild() {
|
function display_help_dkbuild() {
|
||||||
|
@ -257,6 +262,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
|
script s'arrête avec une erreur. Le premier profil listé est spécial: c'est le
|
||||||
profil par défaut.
|
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é
|
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
|
sélectionné par l'utilisateur. L'argument 'DEFAULT' permet de tester le profil
|
||||||
par défaut.
|
par défaut.
|
||||||
|
@ -286,8 +296,8 @@ la plus récente.
|
||||||
Si les distributions sont utilisées avec des versions, alors c'est une erreur de
|
Si les distributions sont utilisées avec des versions, alors c'est une erreur de
|
||||||
spécifier une version dans le profil
|
spécifier une version dans le profil
|
||||||
|
|
||||||
Note: 'setprofiles' ne doit être utilisé qu'une seule fois. Les invocations
|
Note: 'setprofiles' et 'default_profile' ne peuvent être utilisés qu'une seule
|
||||||
suivantes sont ignorées.
|
fois. Les invocations suivantes sont ignorées.
|
||||||
|
|
||||||
## Versions ####################################################################
|
## Versions ####################################################################
|
||||||
|
|
||||||
|
@ -507,6 +517,8 @@ USAGE:
|
||||||
|
|
||||||
## setprofiles -- spécifier les profils valides
|
## 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
|
## profile -- vérifier le profil courant
|
||||||
|
|
||||||
## setversion -- spécifier la version par défaut
|
## setversion -- spécifier la version par défaut
|
||||||
|
@ -774,18 +786,29 @@ Les paramètres optionnels sont
|
||||||
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
||||||
Ce paramétrage est utilisé par exemple pour installer certains packages
|
Ce paramétrage est utilisé par exemple pour installer certains packages
|
||||||
nécessaire au projet.
|
nécessaire au projet.
|
||||||
|
* setup-image=SETUP_IMAGE
|
||||||
|
forcer le nom de l'image pour setup= (la valeur de project-name= est ignorée)
|
||||||
* project-name=PROJECT_NAME
|
* project-name=PROJECT_NAME
|
||||||
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
|
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
|
||||||
est calculé automatiquement
|
est calculé automatiquement
|
||||||
|
|
||||||
Si un fichier .composer.conf existe dans le répertoire du projet, il est sourcé
|
Si un fichier .composer.yaml existe dans le répertoire du projet, il est analysé
|
||||||
pour obtenir les valeurs par défaut des paramètres:
|
pour obtenir les valeurs par défaut des paramètres suivants:
|
||||||
|
* composer_php_min: valeur par défaut de php=
|
||||||
|
* composer_php_max: valeur par défaut de php-max=
|
||||||
|
* composer_registry: ET composer_image: valeur par défaut de image=
|
||||||
|
* composer_setup: valeur par défaut de setup=
|
||||||
|
* composer_setup_image: valeur par défaut de setup-image=
|
||||||
|
|
||||||
|
Sinon, si un fichier .composer.conf existe dans le répertoire du projet, il est
|
||||||
|
sourcé pour obtenir les valeurs par défaut des paramètres:
|
||||||
* COMPOSER_PHP -- valeur par défaut de php=
|
* COMPOSER_PHP -- valeur par défaut de php=
|
||||||
* COMPOSER_PHP_MAX -- valeur par défaut de php-max=
|
* COMPOSER_PHP_MAX -- valeur par défaut de php-max=
|
||||||
* COMPOSER_IMAGE -- valeur par défaut de image=
|
* COMPOSER_IMAGE -- valeur par défaut de image=
|
||||||
* COMPOSER_MACHINE -- valeur par défaut de machine=
|
* COMPOSER_MACHINE -- valeur par défaut de machine=
|
||||||
* COMPOSER_CMD -- valeur par défaut de composer=
|
* COMPOSER_CMD -- valeur par défaut de composer=
|
||||||
* COMPOSER_SETUP -- valeur par défaut de setup=
|
* COMPOSER_SETUP -- valeur par défaut de setup=
|
||||||
|
* COMPOSER_SETUP_IMAGE -- valeur par défaut de setup-image=
|
||||||
|
|
||||||
## mvn -- construire projet maven
|
## mvn -- construire projet maven
|
||||||
|
|
||||||
|
@ -847,6 +870,8 @@ Les paramètres optionnels sont
|
||||||
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
|
||||||
Ce paramétrage est utilisé par exemple pour installer certains packages
|
Ce paramétrage est utilisé par exemple pour installer certains packages
|
||||||
nécessaire au projet.
|
nécessaire au projet.
|
||||||
|
* setup-image=SETUP_IMAGE
|
||||||
|
forcer le nom de l'image pour setup= (la valeur de project-name= est ignorée)
|
||||||
* project-name=PROJECT_NAME
|
* project-name=PROJECT_NAME
|
||||||
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
|
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
|
||||||
est calculé automatiquement
|
est calculé automatiquement
|
||||||
|
@ -858,6 +883,7 @@ pour obtenir les valeurs par défaut des paramètres:
|
||||||
* MAVEN_MACHINE -- valeur par défaut de machine=
|
* MAVEN_MACHINE -- valeur par défaut de machine=
|
||||||
* MAVEN_CMD -- valeur par défaut de mvn=
|
* MAVEN_CMD -- valeur par défaut de mvn=
|
||||||
* MAVEN_SETUP -- valeur par défaut de setup=
|
* MAVEN_SETUP -- valeur par défaut de setup=
|
||||||
|
* MAVEN_SETUP_IMAGE -- valeur par défaut de setup-image=
|
||||||
|
|
||||||
## run -- lancer des commandes
|
## run -- lancer des commandes
|
||||||
|
|
||||||
|
@ -889,6 +915,7 @@ declare -A PROTECTED_VARS=(
|
||||||
[SETDISTS]=1
|
[SETDISTS]=1
|
||||||
[SETPROFILES_DONE]=1
|
[SETPROFILES_DONE]=1
|
||||||
[SETPROFILES]=1
|
[SETPROFILES]=1
|
||||||
|
[DEFAULT_PROFILE]=1
|
||||||
[SETVERSION_DONE]=1
|
[SETVERSION_DONE]=1
|
||||||
[SETVERSION]=1
|
[SETVERSION]=1
|
||||||
[AUTOBUILD]=1
|
[AUTOBUILD]=1
|
||||||
|
@ -906,7 +933,7 @@ SHARED_ARGS1=(
|
||||||
-c:,--config: CONFIG=
|
-c:,--config: CONFIG=
|
||||||
)
|
)
|
||||||
|
|
||||||
SHARED_LOCALS2="local DIST PROFILE; local -a TMPENVIRON TMPARGS"
|
SHARED_LOCALS2="local DIST PROFILE ALL_PROFILES; local -a TMPENVIRON TMPARGS"
|
||||||
SHARED_ARGS2=(
|
SHARED_ARGS2=(
|
||||||
-d:,--dist: DIST=
|
-d:,--dist: DIST=
|
||||||
-9,--d9 DIST=d9
|
-9,--d9 DIST=d9
|
||||||
|
@ -923,6 +950,7 @@ SHARED_ARGS2=(
|
||||||
-E,--dtest PROFILE=dtest
|
-E,--dtest PROFILE=dtest
|
||||||
-J,--jclain PROFILE=jclain
|
-J,--jclain PROFILE=jclain
|
||||||
--devel PROFILE=devel
|
--devel PROFILE=devel
|
||||||
|
--all-profiles ALL_PROFILES=1
|
||||||
|
|
||||||
-e:,--env: '$TMPENVIRON+=("$value_")'
|
-e:,--env: '$TMPENVIRON+=("$value_")'
|
||||||
--arg: '$TMPARGS+=("$value_")'
|
--arg: '$TMPARGS+=("$value_")'
|
||||||
|
@ -933,6 +961,7 @@ TFUNCTIONS=(
|
||||||
section note info debug
|
section note info debug
|
||||||
setdists dist
|
setdists dist
|
||||||
setprofiles profile
|
setprofiles profile
|
||||||
|
default_profile
|
||||||
setversion version
|
setversion version
|
||||||
setenv resetenv
|
setenv resetenv
|
||||||
setarg resetarg
|
setarg resetarg
|
||||||
|
@ -1269,14 +1298,37 @@ function define_functions_env() {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
function profile() {
|
function profile() {
|
||||||
local profile version
|
local profile version default
|
||||||
for profile in "$@"; do
|
for profile in "$@"; do
|
||||||
[ "$profile" == DEFAULT ] && profile="${SETPROFILES[0]}"
|
if [ "$profile" == DEFAULT ]; then
|
||||||
|
default=1
|
||||||
|
continue
|
||||||
|
fi
|
||||||
parse_profile "$profile" profile version
|
parse_profile "$profile" profile version
|
||||||
[ "$profile" == "$PROFILE" ] || continue
|
[ "$profile" == "$PROFILE" ] || continue
|
||||||
[ -z "$version" -o "$version" == "$PVERSION" ] || continue
|
[ -z "$version" -o "$version" == "$PVERSION" ] || continue
|
||||||
return 0
|
return 0
|
||||||
done
|
done
|
||||||
|
if [ -n "$default" ]; then
|
||||||
|
# trouver la dernière occurence du premier profil mentionné. en
|
||||||
|
# effet, les versions doivent être ordonnées de la plus ancienne à
|
||||||
|
# la plus récente.
|
||||||
|
local first_profile last_version
|
||||||
|
for profile in "${SETPROFILES[@]}"; do
|
||||||
|
parse_profile "$profile" profile version
|
||||||
|
if [ -z "$first_profile" ]; then
|
||||||
|
first_profile="$profile"
|
||||||
|
last_version="$version"
|
||||||
|
elif [ "$profile" == "$first_profile" ]; then
|
||||||
|
last_version="$version"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$first_profile" == "$PROFILE" ]; then
|
||||||
|
if [ -z "$last_version" -o "$last_version" == "$PVERSION" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
declare -g -A ENVIRON
|
declare -g -A ENVIRON
|
||||||
|
@ -1405,6 +1457,7 @@ function resolve_dists_profiles() {
|
||||||
SETDISTS=()
|
SETDISTS=()
|
||||||
SETPROFILES_DONE=
|
SETPROFILES_DONE=
|
||||||
SETPROFILES=()
|
SETPROFILES=()
|
||||||
|
DEFAULT_PROFILE=
|
||||||
SETVERSION_DONE=
|
SETVERSION_DONE=
|
||||||
SETVERSION=
|
SETVERSION=
|
||||||
AUTOBUILD=1
|
AUTOBUILD=1
|
||||||
|
@ -1419,6 +1472,9 @@ function resolve_dists_profiles() {
|
||||||
SETPROFILES=("$@")
|
SETPROFILES=("$@")
|
||||||
SETPROFILES_DONE=1
|
SETPROFILES_DONE=1
|
||||||
}
|
}
|
||||||
|
function default_profile() {
|
||||||
|
[ -n "$DEFAULT_PROFILE" ] || DEFAULT_PROFILE="$1"
|
||||||
|
}
|
||||||
function build() {
|
function build() {
|
||||||
AUTOBUILD=
|
AUTOBUILD=
|
||||||
}
|
}
|
||||||
|
@ -1427,6 +1483,10 @@ function resolve_dists_profiles() {
|
||||||
}
|
}
|
||||||
load_dkbuild
|
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=
|
local MANUAL_SETPROFILES=
|
||||||
if [ -z "$SETPROFILES_DONE" -a -n "$PROFILE" ]; then
|
if [ -z "$SETPROFILES_DONE" -a -n "$PROFILE" ]; then
|
||||||
# Si l'utilisateur spécifie un profil mais qu'aucun profil n'a été
|
# Si l'utilisateur spécifie un profil mais qu'aucun profil n'a été
|
||||||
|
@ -1486,7 +1546,7 @@ function resolve_dists_profiles() {
|
||||||
fi
|
fi
|
||||||
parse_profile "$profile"
|
parse_profile "$profile"
|
||||||
if [ "$profile" == "$PROFILE" ]; then
|
if [ "$profile" == "$PROFILE" ]; then
|
||||||
# ou matcher uniquement la distribution
|
# ou matcher uniquement le profil
|
||||||
found=1
|
found=1
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
@ -1495,8 +1555,16 @@ function resolve_dists_profiles() {
|
||||||
[ -n "$found" ] || die "$PROFILE: profil invalide"
|
[ -n "$found" ] || die "$PROFILE: profil invalide"
|
||||||
# forcer à ne construire que cette distribution
|
# forcer à ne construire que cette distribution
|
||||||
PROFILES=("$PROFILE")
|
PROFILES=("$PROFILE")
|
||||||
|
elif [ -n "$ALL_PROFILES" ]; then
|
||||||
|
# prendre tous les profils comme indiqué
|
||||||
|
for profile in "${SETPROFILES[@]}"; do
|
||||||
|
parse_profile "$profile"
|
||||||
|
PROFILES+=("$profile")
|
||||||
|
done
|
||||||
else
|
else
|
||||||
PROFILES=("${SETPROFILES[@]}")
|
# prendre le profil par défaut
|
||||||
|
parse_profile "${SETPROFILES[0]}"
|
||||||
|
PROFILES=("$profile")
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
load_dkbuild
|
load_dkbuild
|
||||||
|
@ -1834,6 +1902,7 @@ function define_functions_cmd() {
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
[ -n "${DEFAULTS[build_build]-1}" ] || return 0
|
||||||
[ -n "$output" ] || die "genfile: Vous devez spécifier le fichier en sortie"
|
[ -n "$output" ] || die "genfile: Vous devez spécifier le fichier en sortie"
|
||||||
if [ -n "$context" ]; then
|
if [ -n "$context" ]; then
|
||||||
mkdir -p "$context" || die
|
mkdir -p "$context" || die
|
||||||
|
@ -1869,6 +1938,7 @@ function define_functions_cmd() {
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
[ -n "${DEFAULTS[build_build]-1}" ] || return 0
|
||||||
[ -n "$DOCKERFILE" ] || DOCKERFILE=Dockerfile
|
[ -n "$DOCKERFILE" ] || DOCKERFILE=Dockerfile
|
||||||
DOCKERCONTEXT=.
|
DOCKERCONTEXT=.
|
||||||
if [ -n "$context" ]; then
|
if [ -n "$context" ]; then
|
||||||
|
@ -1892,6 +1962,7 @@ function define_functions_cmd() {
|
||||||
function add2dockerfile() {
|
function add2dockerfile() {
|
||||||
edebug "$(qvals "$@")"
|
edebug "$(qvals "$@")"
|
||||||
|
|
||||||
|
[ -n "${DEFAULTS[build_build]-1}" ] || return 0
|
||||||
[ -n "$DOCKERFILE" ] || return
|
[ -n "$DOCKERFILE" ] || return
|
||||||
echo "$*" >>"$DOCKERFILE"
|
echo "$*" >>"$DOCKERFILE"
|
||||||
}
|
}
|
||||||
|
@ -2002,6 +2073,7 @@ function define_functions_cmd() {
|
||||||
local avar
|
local avar
|
||||||
local -a args; args=(
|
local -a args; args=(
|
||||||
${no_cache:+--no-cache}
|
${no_cache:+--no-cache}
|
||||||
|
${progress:+--progress "$progress"}
|
||||||
${pull:+--pull}
|
${pull:+--pull}
|
||||||
)
|
)
|
||||||
eval "host_mappings=($host_mappings)"
|
eval "host_mappings=($host_mappings)"
|
||||||
|
@ -2039,6 +2111,7 @@ function define_functions_cmd() {
|
||||||
function cbuild() {
|
function cbuild() {
|
||||||
edebug "cbuild $(qvals "$@")"
|
edebug "cbuild $(qvals "$@")"
|
||||||
|
|
||||||
|
local build="${DEFAULTS[build_build]-1}"
|
||||||
local files="${DEFAULTS[cbuild_files]}"
|
local files="${DEFAULTS[cbuild_files]}"
|
||||||
local project_name="${DEFAULTS[cbuild_project-name]}"
|
local project_name="${DEFAULTS[cbuild_project-name]}"
|
||||||
local no_cache="${DEFAULTS[cbuild_no-cache]}"
|
local no_cache="${DEFAULTS[cbuild_no-cache]}"
|
||||||
|
@ -2057,6 +2130,7 @@ function define_functions_cmd() {
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
[ -n "$build" ] || return
|
||||||
if [ -n "$files" ]; then
|
if [ -n "$files" ]; then
|
||||||
eval "files=($files)"
|
eval "files=($files)"
|
||||||
else
|
else
|
||||||
|
@ -2083,6 +2157,7 @@ function define_functions_cmd() {
|
||||||
local avar evar; local -a bargs
|
local avar evar; local -a bargs
|
||||||
bargs=(
|
bargs=(
|
||||||
${no_cache:+--no-cache}
|
${no_cache:+--no-cache}
|
||||||
|
${progress:+--progress "$progress"}
|
||||||
${pull:+--pull}
|
${pull:+--pull}
|
||||||
)
|
)
|
||||||
for avar in "${!ARGS[@]}"; do
|
for avar in "${!ARGS[@]}"; do
|
||||||
|
@ -2153,6 +2228,7 @@ function define_functions_cmd() {
|
||||||
-e group="$group"
|
-e group="$group"
|
||||||
-e projdir="$projdir"
|
-e projdir="$projdir"
|
||||||
-e setup="$setup"
|
-e setup="$setup"
|
||||||
|
-e setup_image="$setup_image"
|
||||||
-e composer="$composer"
|
-e composer="$composer"
|
||||||
-e args="$args"
|
-e args="$args"
|
||||||
)
|
)
|
||||||
|
@ -2182,32 +2258,33 @@ fi
|
||||||
|
|
||||||
if [ -n "$setup" ]; then
|
if [ -n "$setup" ]; then
|
||||||
local project_name container_name ctid
|
local project_name container_name ctid
|
||||||
|
local setup_image="$setup_image"
|
||||||
|
|
||||||
# lancement dans un container docker à préparer
|
# lancement dans un container docker à préparer
|
||||||
[ -n "$project_name" ] || setx project_name=get_project_name
|
[ -n "$project_name" ] || setx project_name=get_project_name
|
||||||
setx container_name=get_container_name "$project_name"
|
setx container_name=get_container_name "$project_name"
|
||||||
container_name="dkbuild_composer_${container_name}"
|
[ -n "$setup_image" ] || setup_image="dkbuild_composer_${container_name}_image"
|
||||||
|
|
||||||
# vérifier l'existence de l'image
|
# vérifier l'existence de l'image
|
||||||
setx ctid=docker image ls --format '{{.ID}}' "${container_name}_image"
|
setx ctid=docker image ls --format '{{.ID}}' "$setup_image"
|
||||||
|
|
||||||
# créer le container le cas échéant
|
# créer le container le cas échéant
|
||||||
if [ -z "$ctid" ]; then
|
if [ -z "$ctid" ]; then
|
||||||
estep "Création du container $container_name à partir de l'image $image"
|
estep "Création de l'image $setup_image à partir de $image"
|
||||||
cmd=(
|
cmd=(
|
||||||
docker create -it --name "${container_name}_ct"
|
docker create -it --name "${setup_image}_tmpct"
|
||||||
"${basecmd[@]}"
|
"${basecmd[@]}"
|
||||||
"$image"
|
"$image"
|
||||||
bash -c "$setupscript"
|
bash -c "$setupscript"
|
||||||
)
|
)
|
||||||
setx ctid="${cmd[@]}" &&
|
setx ctid="${cmd[@]}" &&
|
||||||
docker container start -ai "$ctid" &&
|
docker container start -ai "$ctid" &&
|
||||||
docker container commit "$ctid" "${container_name}_image" &&
|
docker container commit "$ctid" "$setup_image" &&
|
||||||
docker container rm "$ctid" || die
|
docker container rm "$ctid" || die
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# prendre comme image le container créé
|
# prendre comme image le container créé
|
||||||
image="${container_name}_image"
|
image="$setup_image"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$action" in
|
case "$action" in
|
||||||
|
@ -2256,8 +2333,29 @@ fi
|
||||||
[ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}"
|
[ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}"
|
||||||
local composer="${DEFAULTS[composer_composer]}"
|
local composer="${DEFAULTS[composer_composer]}"
|
||||||
local setup="${DEFAULTS[composer_setup]}"
|
local setup="${DEFAULTS[composer_setup]}"
|
||||||
|
local setup_image="${DEFAULTS[composer_setup-image]}"
|
||||||
local project_name="${DEFAULTS[composer_project-name]}"
|
local project_name="${DEFAULTS[composer_project-name]}"
|
||||||
if [ -f "$destdir/.composer.conf" ]; then
|
if [ -f "$destdir/.composer.yaml" ]; then
|
||||||
|
eval "$(
|
||||||
|
COMPOSER_PHP=
|
||||||
|
COMPOSER_PHP_MAX=
|
||||||
|
COMPOSER_IMAGE="$COMPOSER_IMAGE"
|
||||||
|
COMPOSER_SETUP=
|
||||||
|
COMPOSER_SETUP_IMAGE=
|
||||||
|
eval "$(<"$destdir/.composer.yaml" grep ^composer_ |
|
||||||
|
sed 's/^composer_php_min: /COMPOSER_PHP=/
|
||||||
|
s/^composer_php_max: /COMPOSER_PHP_MAX=/
|
||||||
|
s/^composer_registry: /registry=/
|
||||||
|
s/^composer_image: \(.*\)/COMPOSER_IMAGE="${registry:-$REGISTRY}\/\1"/
|
||||||
|
s/^composer_setup: /COMPOSER_SETUP=/
|
||||||
|
s/^composer_setup_image: /COMPOSER_SETUP_IMAGE=/')"
|
||||||
|
[ -z "$php" ] && echo_setv php="$COMPOSER_PHP"
|
||||||
|
[ -z "$php_max" ] && echo_setv php_max="$COMPOSER_PHP_MAX"
|
||||||
|
[ -z "$image" ] && echo_setv image="$COMPOSER_IMAGE"
|
||||||
|
[ -z "$setup" ] && echo_setv setup="$COMPOSER_SETUP"
|
||||||
|
[ -z "$setup_image" ] && echo_setv setup_image="$COMPOSER_SETUP_IMAGE"
|
||||||
|
)"
|
||||||
|
elif [ -f "$destdir/.composer.conf" ]; then
|
||||||
eval "$(
|
eval "$(
|
||||||
COMPOSER_PHP=
|
COMPOSER_PHP=
|
||||||
COMPOSER_PHP_MAX=
|
COMPOSER_PHP_MAX=
|
||||||
|
@ -2265,6 +2363,7 @@ fi
|
||||||
COMPOSER_MACHINE=-u
|
COMPOSER_MACHINE=-u
|
||||||
COMPOSER_CMD=
|
COMPOSER_CMD=
|
||||||
COMPOSER_SETUP=
|
COMPOSER_SETUP=
|
||||||
|
COMPOSER_SETUP_IMAGE=
|
||||||
source "$destdir/.composer.conf"
|
source "$destdir/.composer.conf"
|
||||||
[ -z "$php" ] && echo_setv php="$COMPOSER_PHP"
|
[ -z "$php" ] && echo_setv php="$COMPOSER_PHP"
|
||||||
[ -z "$php_max" ] && echo_setv php_max="$COMPOSER_PHP_MAX"
|
[ -z "$php_max" ] && echo_setv php_max="$COMPOSER_PHP_MAX"
|
||||||
|
@ -2272,6 +2371,7 @@ fi
|
||||||
[ -z "$machine" ] && echo_setv machine="$COMPOSER_MACHINE"
|
[ -z "$machine" ] && echo_setv machine="$COMPOSER_MACHINE"
|
||||||
[ -z "$composer" ] && echo_setv composer="$COMPOSER_CMD"
|
[ -z "$composer" ] && echo_setv composer="$COMPOSER_CMD"
|
||||||
[ -z "$setup" ] && echo_setv setup="$COMPOSER_SETUP"
|
[ -z "$setup" ] && echo_setv setup="$COMPOSER_SETUP"
|
||||||
|
[ -z "$setup_image" ] && echo_setv setup_image="$COMPOSER_SETUP_IMAGE"
|
||||||
)"
|
)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2287,6 +2387,7 @@ fi
|
||||||
host-mappings=*) host_mappings="${1#host-mappings=}";;
|
host-mappings=*) host_mappings="${1#host-mappings=}";;
|
||||||
composer=*) composer="${1#composer=}";;
|
composer=*) composer="${1#composer=}";;
|
||||||
setup=*) setup="${1#setup=}";;
|
setup=*) setup="${1#setup=}";;
|
||||||
|
setup-image=*) setup_image="${1#setup-image=}";;
|
||||||
project-name=*) project_name="${1#project-name=}";;
|
project-name=*) project_name="${1#project-name=}";;
|
||||||
*=*) ewarn "composer: $1: argument ignoré";;
|
*=*) ewarn "composer: $1: argument ignoré";;
|
||||||
*) break;;
|
*) break;;
|
||||||
|
@ -2375,7 +2476,7 @@ exit((PHP_VERSION_ID < $version)? 0: 1);
|
||||||
function _local_mvn() {
|
function _local_mvn() {
|
||||||
if [ -n "$java" ]; then
|
if [ -n "$java" ]; then
|
||||||
urequire java
|
urequire java
|
||||||
select_java_exact "$java" || die
|
select_java_exact "$java" || die "mvn: Java $java introuvable"
|
||||||
export MVN_JAVA_VERSION="$java"
|
export MVN_JAVA_VERSION="$java"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2452,6 +2553,7 @@ exit((PHP_VERSION_ID < $version)? 0: 1);
|
||||||
-e group="$group"
|
-e group="$group"
|
||||||
-e projdir="$projdir"
|
-e projdir="$projdir"
|
||||||
-e setup="$setup"
|
-e setup="$setup"
|
||||||
|
-e setup_image="$setup_image"
|
||||||
-e mvn="$mvn"
|
-e mvn="$mvn"
|
||||||
-e args="$args"
|
-e args="$args"
|
||||||
${java:+-e JAVA="$java"}
|
${java:+-e JAVA="$java"}
|
||||||
|
@ -2477,32 +2579,33 @@ cd "$projdir"
|
||||||
|
|
||||||
if [ -n "$setup" ]; then
|
if [ -n "$setup" ]; then
|
||||||
local project_name container_name ctid
|
local project_name container_name ctid
|
||||||
|
local setup_image="$setup_image"
|
||||||
|
|
||||||
# lancement dans un container docker à préparer
|
# lancement dans un container docker à préparer
|
||||||
[ -n "$project_name" ] || setx project_name=get_project_name
|
[ -n "$project_name" ] || setx project_name=get_project_name
|
||||||
setx container_name=get_container_name "$project_name"
|
setx container_name=get_container_name "$project_name"
|
||||||
container_name="dkbuild_maven_${container_name}"
|
[ -n "$setup_image" ] || setup_image="dkbuild_maven_${container_name}_image"
|
||||||
|
|
||||||
# vérifier l'existence de l'image
|
# vérifier l'existence de l'image
|
||||||
setx ctid=docker image ls --format '{{.ID}}' "${container_name}_image"
|
setx ctid=docker image ls --format '{{.ID}}' "$setup_image"
|
||||||
|
|
||||||
# créer le container le cas échéant
|
# créer le container le cas échéant
|
||||||
if [ -z "$ctid" ]; then
|
if [ -z "$ctid" ]; then
|
||||||
estep "Création du container $container_name à partir de l'image $image"
|
estep "Création de l'image $setup_image à partir de $image"
|
||||||
cmd=(
|
cmd=(
|
||||||
docker create -it --name "${container_name}_ct"
|
docker create -it --name "${setup_image}_tmpct"
|
||||||
"${basecmd[@]}"
|
"${basecmd[@]}"
|
||||||
"$image"
|
"$image"
|
||||||
bash -c "$setupscript"
|
bash -c "$setupscript"
|
||||||
)
|
)
|
||||||
setx ctid="${cmd[@]}" &&
|
setx ctid="${cmd[@]}" &&
|
||||||
docker container start -ai "$ctid" &&
|
docker container start -ai "$ctid" &&
|
||||||
docker container commit "$ctid" "${container_name}_image" &&
|
docker container commit "$ctid" "$setup_image" &&
|
||||||
docker container rm "$ctid" || die
|
docker container rm "$ctid" || die
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# prendre comme image le container créé
|
# prendre comme image le container créé
|
||||||
image="${container_name}_image"
|
image="$setup_image"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$action" in
|
case "$action" in
|
||||||
|
@ -2547,6 +2650,7 @@ cd "$projdir"
|
||||||
[ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}"
|
[ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}"
|
||||||
local mvn="${DEFAULTS[mvn_mvn]}"
|
local mvn="${DEFAULTS[mvn_mvn]}"
|
||||||
local setup="${DEFAULTS[mvn_setup]}"
|
local setup="${DEFAULTS[mvn_setup]}"
|
||||||
|
local setup_image="${DEFAULTS[mvn_setup-image]}"
|
||||||
local project_name="${DEFAULTS[mvn_project-name]}"
|
local project_name="${DEFAULTS[mvn_project-name]}"
|
||||||
if [ -f "$destdir/.maven.conf" ]; then
|
if [ -f "$destdir/.maven.conf" ]; then
|
||||||
eval "$(
|
eval "$(
|
||||||
|
@ -2555,12 +2659,14 @@ cd "$projdir"
|
||||||
MAVEN_MACHINE=-u
|
MAVEN_MACHINE=-u
|
||||||
MAVEN_CMD=
|
MAVEN_CMD=
|
||||||
MAVEN_SETUP=
|
MAVEN_SETUP=
|
||||||
|
MAVEN_SETUP_IMAGE=
|
||||||
source "$destdir/.maven.conf"
|
source "$destdir/.maven.conf"
|
||||||
[ -z "$java" ] && echo_setv java="$MAVEN_JAVA"
|
[ -z "$java" ] && echo_setv java="$MAVEN_JAVA"
|
||||||
[ -z "$image" ] && echo_setv image="$MAVEN_IMAGE"
|
[ -z "$image" ] && echo_setv image="$MAVEN_IMAGE"
|
||||||
[ -z "$machine" ] && echo_setv machine="$MAVEN_MACHINE"
|
[ -z "$machine" ] && echo_setv machine="$MAVEN_MACHINE"
|
||||||
[ -z "$mvn" ] && echo_setv mvn="$MAVEN_CMD"
|
[ -z "$mvn" ] && echo_setv mvn="$MAVEN_CMD"
|
||||||
[ -z "$setup" ] && echo_setv setup="$MAVEN_SETUP"
|
[ -z "$setup" ] && echo_setv setup="$MAVEN_SETUP"
|
||||||
|
[ -z "$setup_image" ] && echo_setv setup_image="$MAVEN_SETUP_IMAGE"
|
||||||
)"
|
)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -2575,6 +2681,7 @@ cd "$projdir"
|
||||||
host-mappings=*) host_mappings="${1#host-mappings=}";;
|
host-mappings=*) host_mappings="${1#host-mappings=}";;
|
||||||
mvn=*) mvn="${1#mvn=}";;
|
mvn=*) mvn="${1#mvn=}";;
|
||||||
setup=*) setup="${1#setup=}";;
|
setup=*) setup="${1#setup=}";;
|
||||||
|
setup-image=*) setup_image="${1#setup-image=}";;
|
||||||
project-name=*) project_name="${1#project-name=}";;
|
project-name=*) project_name="${1#project-name=}";;
|
||||||
*=*) ewarn "mvn: $1: argument ignoré";;
|
*=*) ewarn "mvn: $1: argument ignoré";;
|
||||||
*) break;;
|
*) break;;
|
||||||
|
@ -2656,9 +2763,10 @@ cd "$projdir"
|
||||||
}
|
}
|
||||||
function runb() {
|
function runb() {
|
||||||
local build="${DEFAULTS[build_build]-1}"
|
local build="${DEFAULTS[build_build]-1}"
|
||||||
if [ -n "$build" ]; then
|
if [ -z "$build" ]; then
|
||||||
run "$@"
|
[ $# -eq 0 ] && return 1 || return 0
|
||||||
fi
|
fi
|
||||||
|
run "$@"
|
||||||
}
|
}
|
||||||
function call() {
|
function call() {
|
||||||
edebug "call $(qvals "$@")"
|
edebug "call $(qvals "$@")"
|
||||||
|
@ -2668,9 +2776,10 @@ cd "$projdir"
|
||||||
}
|
}
|
||||||
function callb() {
|
function callb() {
|
||||||
local build="${DEFAULTS[build_build]-1}"
|
local build="${DEFAULTS[build_build]-1}"
|
||||||
if [ -n "$build" ]; then
|
if [ -z "$build" ]; then
|
||||||
call "$@"
|
[ $# -eq 0 ] && return 1 || return 0
|
||||||
fi
|
fi
|
||||||
|
call "$@"
|
||||||
}
|
}
|
||||||
function dkbuild() {
|
function dkbuild() {
|
||||||
edebug "dkbuild $(qvals "$@")"
|
edebug "dkbuild $(qvals "$@")"
|
||||||
|
@ -2788,7 +2897,7 @@ function build_action() {
|
||||||
local machine
|
local machine
|
||||||
local clean_update clean_opt=-X
|
local clean_update clean_opt=-X
|
||||||
local clone_src_only update_src_only update_src sync_src
|
local clone_src_only update_src_only update_src sync_src
|
||||||
local build no_cache pull_image
|
local build no_cache progress pull_image
|
||||||
local push_image
|
local push_image
|
||||||
local -a args; args=(
|
local -a args; args=(
|
||||||
"${SHARED_ARGS1[@]}" "${SHARED_ARGS2[@]}"
|
"${SHARED_ARGS1[@]}" "${SHARED_ARGS2[@]}"
|
||||||
|
@ -2805,6 +2914,7 @@ function build_action() {
|
||||||
--no-sync-src sync_src=no
|
--no-sync-src sync_src=no
|
||||||
-b,--build build=1
|
-b,--build build=1
|
||||||
--no-cache no_cache=1
|
--no-cache no_cache=1
|
||||||
|
--plain-output progress=plain
|
||||||
-U,--pull-image pull_image=1
|
-U,--pull-image pull_image=1
|
||||||
-p,--push-image push_image=1
|
-p,--push-image push_image=1
|
||||||
)
|
)
|
||||||
|
@ -2816,12 +2926,16 @@ function build_action() {
|
||||||
action=update_src
|
action=update_src
|
||||||
else
|
else
|
||||||
action=build
|
action=build
|
||||||
[ -n "$update_src" ] || update_src=1
|
|
||||||
[ "$update_src" == no ] && update_src=
|
|
||||||
if [ -z "$clean_update" -a -z "$sync_src" -a -z "$build" -a -z "$push_image" ]; then
|
if [ -z "$clean_update" -a -z "$sync_src" -a -z "$build" -a -z "$push_image" ]; then
|
||||||
sync_src=1
|
sync_src=1
|
||||||
build=1
|
build=1
|
||||||
fi
|
fi
|
||||||
|
if [ -n "$build" ]; then
|
||||||
|
[ -n "$update_src" ] || update_src=1
|
||||||
|
[ "$update_src" == no ] && update_src=
|
||||||
|
else
|
||||||
|
update_src=
|
||||||
|
fi
|
||||||
[ "$sync_src" == no ] && sync_src=
|
[ "$sync_src" == no ] && sync_src=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -20,27 +20,5 @@
|
||||||
#MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
|
#MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
|
||||||
|
|
||||||
# Image à utiliser pour les builds
|
# Image à utiliser pour les builds
|
||||||
#DEFAULT_COMPOSER_IMAGE=pubdocker.univ-reunion.fr/image/phpbuilder:d11
|
#DEFAULT_COMPOSER_IMAGE=pubdocker.univ-reunion.fr/image/php:d11
|
||||||
#DEFAULT_MAVEN_IMAGE=pubdocker.univ-reunion.fr/image/javabuilder:d11
|
#DEFAULT_MAVEN_IMAGE=pubdocker.univ-reunion.fr/image/javabuilder:d11
|
||||||
|
|
||||||
# Mappings d'hôtes à activer pour les builds à base d'image
|
|
||||||
#DEFAULT_HOST_MAPPINGS=()
|
|
||||||
#prod_HOST_MAPPINGS=(pridocker.univ-reunion.fr:10.85.1.56 pubdocker.univ-reunion.fr:10.85.1.57 repos.univ-reunion.fr:10.85.1.57 git.univ-reunion.fr:10.85.1.55)
|
|
||||||
#test_HOST_MAPPINGS=("${prod_HOST_MAPPINGS}")
|
|
||||||
|
|
||||||
#case "$PROFILE" in
|
|
||||||
#jclain)
|
|
||||||
# REGISTRY=docker.jclain.fr
|
|
||||||
# PRIVAREG=docker.jclain.fr
|
|
||||||
# ;;
|
|
||||||
#devel)
|
|
||||||
# REGISTRY=docker.devel.self
|
|
||||||
# PRIVAREG=docker.devel.self
|
|
||||||
# ;;
|
|
||||||
#prod|test|*)
|
|
||||||
# REGISTRY=pubdocker.univ-reunion.fr
|
|
||||||
# PRIVAREG=pridocker.univ-reunion.fr
|
|
||||||
# ;;
|
|
||||||
#esac
|
|
||||||
#: ${DEFAULT_COMPOSER_IMAGE:=$REGISTRY/image/phpbuilder:d11}
|
|
||||||
#: ${DEFAULT_MAVEN_IMAGE:=$REGISTRY/image/javabuilder:d11}
|
|
||||||
|
|
|
@ -1,11 +1,20 @@
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
default_profile "${DKBUILD_PROFILE:-prod}"
|
||||||
|
|
||||||
if profile jclain; then
|
if profile jclain; then
|
||||||
setenv REGISTRY=docker.jclain.fr
|
setenv REGISTRY=docker.jclain.fr
|
||||||
setenv PRIVAREG=docker.jclain.fr
|
setenv PRIVAREG=docker.jclain.fr
|
||||||
elif profile prod test; then
|
elif profile prod test; then
|
||||||
setenv REGISTRY=pubdocker.univ-reunion.fr
|
setenv REGISTRY=pubdocker.univ-reunion.fr
|
||||||
setenv PRIVAREG=pridocker.univ-reunion.fr
|
setenv PRIVAREG=pridocker.univ-reunion.fr
|
||||||
else
|
host_mappings=(
|
||||||
|
pridocker.univ-reunion.fr:10.85.1.56
|
||||||
|
pubdocker.univ-reunion.fr:10.85.1.57
|
||||||
|
repos.univ-reunion.fr:10.85.1.57
|
||||||
|
git.univ-reunion.fr:10.85.1.55
|
||||||
|
)
|
||||||
|
default docker host-mappings="${host_mappings[*]}"
|
||||||
|
elif profile devel; then
|
||||||
setenv REGISTRY=docker.devel.self
|
setenv REGISTRY=docker.devel.self
|
||||||
setenv PRIVAREG=docker.devel.self
|
setenv PRIVAREG=docker.devel.self
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
# tests
|
||||||
|
|
||||||
|
Lancer un test de cette façon
|
||||||
|
~~~sh
|
||||||
|
../../../dkbuild -j test-xxx
|
||||||
|
~~~
|
||||||
|
|
||||||
|
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -1,2 +1,2 @@
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
setenv REGISTRY=jclain.fr
|
setenv REGISTRY=docker.jclain.fr
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setdists v1-d11 v2-d11 v1-d10
|
||||||
|
|
||||||
|
if dist LATEST; then
|
||||||
|
info "$DIST est la distribution la plus récente"
|
||||||
|
fi
|
||||||
|
info "version=$VERSION"
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -0,0 +1,10 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
setprofiles v1-prod v2-prod test
|
||||||
|
|
||||||
|
if profile DEFAULT; then
|
||||||
|
info "$PROFILE est le profil par défaut"
|
||||||
|
fi
|
||||||
|
info "version=$VERSION"
|
||||||
|
|
||||||
|
# pas de build automatique
|
||||||
|
AUTOBUILD=
|
|
@ -68,6 +68,9 @@ if [ "$UINST_LOCAL_PROFILES" != auto ]; then
|
||||||
export UTOOLS_LOCAL_PROFILES=$(qvalr "$UINST_LOCAL_PROFILES")" ~/.nutoolsrc
|
export UTOOLS_LOCAL_PROFILES=$(qvalr "$UINST_LOCAL_PROFILES")" ~/.nutoolsrc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# copier .dkbuild.env
|
||||||
|
[ -f ~/.dkbuild.env ] || cp lib/dkbuild/dot-dkbuild.env ~/.dkbuild.env
|
||||||
|
|
||||||
# identification du système
|
# identification du système
|
||||||
echo "##@before *" >lib/profile.d/0nutools
|
echo "##@before *" >lib/profile.d/0nutools
|
||||||
echo_setv UNAME_SYSTEM "$UNAME_SYSTEM" >>lib/profile.d/0nutools
|
echo_setv UNAME_SYSTEM "$UNAME_SYSTEM" >>lib/profile.d/0nutools
|
||||||
|
|
|
@ -500,37 +500,37 @@ function select_java() {
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
1.3|1.3+)
|
1.3|1.3+)
|
||||||
for v in 1_3 1_4 5 6 7 8 11; do
|
for v in 1_3 1_4 5 6 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
1.4|1.4+)
|
1.4|1.4+)
|
||||||
for v in 1_4 5 6 7 8 11; do
|
for v in 1_4 5 6 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
1.5|1.5+|5|5+)
|
1.5|1.5+|5|5+)
|
||||||
for v in 5 6 7 8 11; do
|
for v in 5 6 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
1.6|1.6+|6|6+)
|
1.6|1.6+|6|6+)
|
||||||
for v in 6 7 8 11; do
|
for v in 6 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
1.7|1.7+|7|7+)
|
1.7|1.7+|7|7+)
|
||||||
for v in 7 8 11; do
|
for v in 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
1.8|1.8+|8|8+)
|
1.8|1.8+|8|8+)
|
||||||
for v in 8 11; do
|
for v in 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
11|11+)
|
11|11+)
|
||||||
for v in 11; do
|
for v in 11 17; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
@ -556,7 +556,7 @@ function select_java_exact() {
|
||||||
__java_select 1_3 && return 0
|
__java_select 1_3 && return 0
|
||||||
;;
|
;;
|
||||||
1.3+)
|
1.3+)
|
||||||
for v in 1_3 1_4 5 6 7 8 11; do
|
for v in 1_3 1_4 5 6 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
@ -564,7 +564,7 @@ function select_java_exact() {
|
||||||
__java_select 1_4 && return 0
|
__java_select 1_4 && return 0
|
||||||
;;
|
;;
|
||||||
1.4+)
|
1.4+)
|
||||||
for v in 1_4 5 6 7 8 11; do
|
for v in 1_4 5 6 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
@ -572,7 +572,7 @@ function select_java_exact() {
|
||||||
__java_select 5 "$2" && return 0
|
__java_select 5 "$2" && return 0
|
||||||
;;
|
;;
|
||||||
1.5+|5+)
|
1.5+|5+)
|
||||||
for v in 5 6 7 8 11; do
|
for v in 5 6 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
@ -580,7 +580,7 @@ function select_java_exact() {
|
||||||
__java_select 6 "$2" && return 0
|
__java_select 6 "$2" && return 0
|
||||||
;;
|
;;
|
||||||
1.6+|6+)
|
1.6+|6+)
|
||||||
for v in 6 7 8 11; do
|
for v in 6 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
@ -588,7 +588,7 @@ function select_java_exact() {
|
||||||
__java_select 7 "$2" && return 0
|
__java_select 7 "$2" && return 0
|
||||||
;;
|
;;
|
||||||
1.7+|7+)
|
1.7+|7+)
|
||||||
for v in 7 8 11; do
|
for v in 7 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
@ -596,7 +596,7 @@ function select_java_exact() {
|
||||||
__java_select 8 "$2" && return 0
|
__java_select 8 "$2" && return 0
|
||||||
;;
|
;;
|
||||||
1.8+|8+)
|
1.8+|8+)
|
||||||
for v in 8 11; do
|
for v in 8; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
@ -604,7 +604,7 @@ function select_java_exact() {
|
||||||
__java_select 11 "$2" && return 0
|
__java_select 11 "$2" && return 0
|
||||||
;;
|
;;
|
||||||
11+)
|
11+)
|
||||||
for v in 11; do
|
for v in 11 17; do
|
||||||
__java_select "$v" "$2" && return 0
|
__java_select "$v" "$2" && return 0
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
30
lib/ulib/pff
30
lib/ulib/pff
|
@ -117,8 +117,21 @@ function pff_get_first_profile() {
|
||||||
function pff_get_local_files() {
|
function pff_get_local_files() {
|
||||||
# afficher tous les fichiers locaux exprimés relativement au répertoire du
|
# afficher tous les fichiers locaux exprimés relativement au répertoire du
|
||||||
# projet pff $1
|
# projet pff $1
|
||||||
local pffdir="$1"
|
local pffdir="$1" files file dirs dir isald
|
||||||
find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '__pv-.*__$'
|
files="$(find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$')"
|
||||||
|
dirs="$(echo "$files" | grep '/\.pffdir$' | sed 's/\.pffdir$//')"
|
||||||
|
setx -a files=echo "$files"
|
||||||
|
setx -a dirs=echo "$dirs"
|
||||||
|
for file in "${files[@]}"; do
|
||||||
|
isald=
|
||||||
|
for dir in "${dirs[@]}"; do
|
||||||
|
if [ "${file#$dir}" != "$file" ]; then
|
||||||
|
isald=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ -z "$isald" -o "$file" == "${dir}.pffdir" ] && echo "$file"
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function pff_get_rfile() {
|
function pff_get_rfile() {
|
||||||
|
@ -253,7 +266,18 @@ function pff_select_profile() {
|
||||||
setx -a lfiles=pff_get_local_files "$pffdir"
|
setx -a lfiles=pff_get_local_files "$pffdir"
|
||||||
for lfile in "${lfiles[@]}"; do
|
for lfile in "${lfiles[@]}"; do
|
||||||
src="$pffdir/pff/Current/$lfile"
|
src="$pffdir/pff/Current/$lfile"
|
||||||
if [ -f "$pffdir/pff/$profile/$lfile" ]; then
|
if [[ "$lfile" == */.pffdir ]]; then
|
||||||
|
# répertoires entiers
|
||||||
|
lfile="${lfile%/.pffdir}"
|
||||||
|
src="${src%/.pffdir}"
|
||||||
|
if [ -d "$pffdir/pff/$profile/$lfile" ]; then
|
||||||
|
dest="$profile/$lfile"
|
||||||
|
elif [ "$profile" != Common -a -d "$pffdir/pff/Common/$lfile" ]; then
|
||||||
|
dest="Common/$lfile"
|
||||||
|
else
|
||||||
|
dest="Base/$lfile"
|
||||||
|
fi
|
||||||
|
elif [ -f "$pffdir/pff/$profile/$lfile" ]; then
|
||||||
dest="$profile/$lfile"
|
dest="$profile/$lfile"
|
||||||
elif [ "$profile" != Common -a -f "$pffdir/pff/Common/$lfile" ]; then
|
elif [ "$profile" != Common -a -f "$pffdir/pff/Common/$lfile" ]; then
|
||||||
dest="Common/$lfile"
|
dest="Common/$lfile"
|
||||||
|
|
|
@ -18,11 +18,11 @@ function is_any_branch() {
|
||||||
case "$spec" in
|
case "$spec" in
|
||||||
m|master)
|
m|master)
|
||||||
[ -n "$r" ] || r=1
|
[ -n "$r" ] || r=1
|
||||||
[ "$branch" == "master" ] && return 0
|
[ "$branch" == master ] && return 0
|
||||||
;;
|
;;
|
||||||
d|develop)
|
d|develop)
|
||||||
[ -n "$r" ] || r=1
|
[ -n "$r" ] || r=1
|
||||||
[ "$branch" == "develop" ] && return 0
|
[ "$branch" == develop ] && return 0
|
||||||
;;
|
;;
|
||||||
r|release)
|
r|release)
|
||||||
[ -n "$r" ] || r=1
|
[ -n "$r" ] || r=1
|
||||||
|
@ -34,20 +34,21 @@ function is_any_branch() {
|
||||||
;;
|
;;
|
||||||
f|feature|t|topic)
|
f|feature|t|topic)
|
||||||
[ -n "$r" ] || r=1
|
[ -n "$r" ] || r=1
|
||||||
[ "$branch" == "master" ] && continue
|
[ "$branch" == master ] && continue
|
||||||
[ "$branch" == "develop" ] && continue
|
[ "$branch" == develop ] && continue
|
||||||
[[ "$branch" == release-* ]] && continue
|
[[ "$branch" == release-* ]] && continue
|
||||||
[[ "$branch" == hotfix-* ]] && continue
|
[[ "$branch" == hotfix-* ]] && continue
|
||||||
[ -n "$annex" -a "$branch" == "git-annex" ] && continue
|
[ -n "$annex" -a "$branch" == "git-annex" ] && continue
|
||||||
|
[[ "$branch" == wip/* ]] && return 0
|
||||||
[[ "$branch" == */* ]] && continue
|
[[ "$branch" == */* ]] && continue
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
-m|-master)
|
-m|-master)
|
||||||
[ -n "$r" ] || r=0
|
[ -n "$r" ] || r=0
|
||||||
[ "$branch" == "master" ] && return 1;;
|
[ "$branch" == master ] && return 1;;
|
||||||
-d|-develop)
|
-d|-develop)
|
||||||
[ -n "$r" ] || r=0
|
[ -n "$r" ] || r=0
|
||||||
[ "$branch" == "develop" ] && return 1;;
|
[ "$branch" == develop ] && return 1;;
|
||||||
-r|-release)
|
-r|-release)
|
||||||
[ -n "$r" ] || r=0
|
[ -n "$r" ] || r=0
|
||||||
[[ "$branch" == release-* ]] && return 1;;
|
[[ "$branch" == release-* ]] && return 1;;
|
||||||
|
@ -56,11 +57,12 @@ function is_any_branch() {
|
||||||
[[ "$branch" == hotfix-* ]] && return 1;;
|
[[ "$branch" == hotfix-* ]] && return 1;;
|
||||||
-f|-feature|-t|-topic)
|
-f|-feature|-t|-topic)
|
||||||
[ -n "$r" ] || r=0
|
[ -n "$r" ] || r=0
|
||||||
[ "$branch" == "master" ] && continue
|
[ "$branch" == master ] && continue
|
||||||
[ "$branch" == "develop" ] && continue
|
[ "$branch" == develop ] && continue
|
||||||
[[ "$branch" == release-* ]] && continue
|
[[ "$branch" == release-* ]] && continue
|
||||||
[[ "$branch" == hotfix-* ]] && continue
|
[[ "$branch" == hotfix-* ]] && continue
|
||||||
[ -n "$annex" -a "$branch" == "git-annex" ] && continue
|
[ -n "$annex" -a "$branch" == "git-annex" ] && continue
|
||||||
|
[[ "$branch" == wip/* ]] && return 1
|
||||||
[[ "$branch" == */* ]] && continue
|
[[ "$branch" == */* ]] && continue
|
||||||
return 1
|
return 1
|
||||||
;;
|
;;
|
||||||
|
@ -89,7 +91,7 @@ function list_feature_branches() {
|
||||||
grep -vF develop |
|
grep -vF develop |
|
||||||
grep -v '^release-' |
|
grep -v '^release-' |
|
||||||
grep -v '^hotfix-' |
|
grep -v '^hotfix-' |
|
||||||
grep -v '/' |
|
grep -Pv '(?<!^wip)/' |
|
||||||
if git_have_annex; then
|
if git_have_annex; then
|
||||||
grep -vF git-annex
|
grep -vF git-annex
|
||||||
else
|
else
|
||||||
|
|
90
pff
90
pff
|
@ -197,9 +197,16 @@ pff:
|
||||||
NOUPSTREAM -- indiquer qu'il n'y a pas de distribution upstream ni de
|
NOUPSTREAM -- indiquer qu'il n'y a pas de distribution upstream ni de
|
||||||
fichiers origine. pff est alors uniquement utilisé pour gérer des
|
fichiers origine. pff est alors uniquement utilisé pour gérer des
|
||||||
profils de fichier.
|
profils de fichier.
|
||||||
Pour le moment, la seule différence est que le mode des fichiers de
|
Pour le moment, la seule différence fonctionnelle est que le mode des
|
||||||
pff/Base n'est pas forcé à 0444. Ainsi, ces fichiers sont traités au
|
fichiers de pff/Base n'est pas forcé à 0444. Ainsi, ces fichiers sont
|
||||||
même titre que ceux du répertoire pff/Common
|
traités au même titre que ceux du répertoire pff/Common
|
||||||
|
Dans ce mode, on supporte aussi les liens vers des répertoires entiers:
|
||||||
|
il suffit de créer le répertoire dans pff/Base avec un unique fichier
|
||||||
|
.pffdir à l'intérieur. Lors du switch le répertoire correspondant est
|
||||||
|
lié s'il existe dans un profil.
|
||||||
|
NB: s'il existe d'autres fichiers dans le répertoire, ils sont ignorés.
|
||||||
|
Cela permet d'avoir un ensemble de fichiers par défaut, mais les liens
|
||||||
|
symboliques doivent être faits manuellement.
|
||||||
|
|
||||||
COMMANDES / OPTIONS
|
COMMANDES / OPTIONS
|
||||||
Les arguments du script dépendent de la commande utilisée. Les commandes
|
Les arguments du script dépendent de la commande utilisée. Les commandes
|
||||||
|
@ -347,6 +354,21 @@ function flexists() {
|
||||||
[ -e "$1" -o -L "$1" ]
|
[ -e "$1" -o -L "$1" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function multiups() {
|
||||||
|
# afficher un chemin vers le haut e.g ../../.. avec autant d'éléments que
|
||||||
|
# les répertoires du chemin relatif $1.
|
||||||
|
# méthode: commencer avec la valeur de départ $2 et préfixer avec autant de
|
||||||
|
# ../ que nécessaire. puis afficher le résultat.
|
||||||
|
local tmp="$1" link="$2"
|
||||||
|
setx tmp=dirname -- "$tmp"
|
||||||
|
while [ "$tmp" != . ]; do
|
||||||
|
[ -n "$link" ] && link="/$link"
|
||||||
|
link="..$link"
|
||||||
|
setx tmp=dirname -- "$tmp"
|
||||||
|
done
|
||||||
|
echo "$link"
|
||||||
|
}
|
||||||
|
|
||||||
function find_pffdir() {
|
function find_pffdir() {
|
||||||
# trouver le répertoire du projet pff à partir du répertoire $2(=.) et
|
# trouver le répertoire du projet pff à partir du répertoire $2(=.) et
|
||||||
# mettre le chemin absolu dans la variable $1(=pffdir)
|
# mettre le chemin absolu dans la variable $1(=pffdir)
|
||||||
|
@ -413,23 +435,22 @@ function get_first_profile() {
|
||||||
function get_local_files() {
|
function get_local_files() {
|
||||||
# afficher tous les fichiers locaux exprimés relativement au répertoire du
|
# afficher tous les fichiers locaux exprimés relativement au répertoire du
|
||||||
# projet pff $1
|
# projet pff $1
|
||||||
local pffdir="$1"
|
# pour les répertoires liés, ne lister que le fichier .pffdir
|
||||||
find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$'
|
local pffdir="$1" files file dirs dir isald
|
||||||
}
|
files="$(find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$')"
|
||||||
|
dirs="$(echo "$files" | grep '/\.pffdir$' | sed 's/\.pffdir$//')"
|
||||||
function multiups() {
|
setx -a files=echo "$files"
|
||||||
# afficher un chemin vers le haut e.g ../../.. avec autant d'éléments que
|
setx -a dirs=echo "$dirs"
|
||||||
# les répertoires du chemin relatif $1.
|
for file in "${files[@]}"; do
|
||||||
# méthode: commencer avec la valeur de départ $2 et préfixer avec autant de
|
isald=
|
||||||
# ../ que nécessaire. puis afficher le résultat.
|
for dir in "${dirs[@]}"; do
|
||||||
local tmp="$1" link="$2"
|
if [ "${file#$dir}" != "$file" ]; then
|
||||||
setx tmp=dirname -- "$tmp"
|
isald=1
|
||||||
while [ "$tmp" != . ]; do
|
break
|
||||||
[ -n "$link" ] && link="/$link"
|
fi
|
||||||
link="..$link"
|
done
|
||||||
setx tmp=dirname -- "$tmp"
|
[ -z "$isald" -o "$file" == "${dir}.pffdir" ] && echo "$file"
|
||||||
done
|
done
|
||||||
echo "$link"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_rfile() {
|
function get_rfile() {
|
||||||
|
@ -595,7 +616,18 @@ function select_profile() {
|
||||||
setx -a lfiles=get_local_files "$pffdir"
|
setx -a lfiles=get_local_files "$pffdir"
|
||||||
for lfile in "${lfiles[@]}"; do
|
for lfile in "${lfiles[@]}"; do
|
||||||
src="$pffdir/pff/Current/$lfile"
|
src="$pffdir/pff/Current/$lfile"
|
||||||
if [ -f "$pffdir/pff/$profile/$lfile" ]; then
|
if [[ "$lfile" == */.pffdir ]]; then
|
||||||
|
# répertoires entiers
|
||||||
|
lfile="${lfile%/.pffdir}"
|
||||||
|
src="${src%/.pffdir}"
|
||||||
|
if [ -d "$pffdir/pff/$profile/$lfile" ]; then
|
||||||
|
dest="$profile/$lfile"
|
||||||
|
elif [ "$profile" != Common -a -d "$pffdir/pff/Common/$lfile" ]; then
|
||||||
|
dest="Common/$lfile"
|
||||||
|
else
|
||||||
|
dest="Base/$lfile"
|
||||||
|
fi
|
||||||
|
elif [ -f "$pffdir/pff/$profile/$lfile" ]; then
|
||||||
dest="$profile/$lfile"
|
dest="$profile/$lfile"
|
||||||
elif [ "$profile" != Common -a -f "$pffdir/pff/Common/$lfile" ]; then
|
elif [ "$profile" != Common -a -f "$pffdir/pff/Common/$lfile" ]; then
|
||||||
dest="Common/$lfile"
|
dest="Common/$lfile"
|
||||||
|
@ -1456,7 +1488,7 @@ function list_locals_cmd() {
|
||||||
local pffdir="$1"
|
local pffdir="$1"
|
||||||
|
|
||||||
ensure_pffdir pffdir "$pffdir"
|
ensure_pffdir pffdir "$pffdir"
|
||||||
get_local_files "$pffdir"
|
get_local_files "$pffdir" | sed 's/\/.pffdir$/\//'
|
||||||
}
|
}
|
||||||
|
|
||||||
#===========================================================
|
#===========================================================
|
||||||
|
@ -1739,7 +1771,21 @@ function infos_cmd() {
|
||||||
setx -a vlfiles=get_vlfiles "$pffdir" "$rfile" "$profile"
|
setx -a vlfiles=get_vlfiles "$pffdir" "$rfile" "$profile"
|
||||||
setx Pfile=get_pfile "$pffdir/$rfile" "$profile" "$pffdir"
|
setx Pfile=get_pfile "$pffdir/$rfile" "$profile" "$pffdir"
|
||||||
setx Cfile=get_Cfile "$pffdir/$rfile" "$pffdir"
|
setx Cfile=get_Cfile "$pffdir/$rfile" "$pffdir"
|
||||||
if [ ${#vlfiles[*]} -gt 0 ]; then
|
if [[ "$rfile" == */.pffdir ]]; then
|
||||||
|
# répertoires entiers
|
||||||
|
rfile="${rfile%.pffdir}"
|
||||||
|
Pfile="${Pfile%/.pffdir}"
|
||||||
|
Cfile="${Cfile%/.pffdir}"
|
||||||
|
if [ -d "$Pfile" ]; then
|
||||||
|
flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} "
|
||||||
|
elif [ "$profile" != Common -a -d "$Cfile" ]; then
|
||||||
|
flag="$(get_color YELLOW)C${COULEUR_NORMALE} "
|
||||||
|
elif [ -z "$show_all" ]; then
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
flag=" "
|
||||||
|
fi
|
||||||
|
elif [ ${#vlfiles[*]} -gt 0 ]; then
|
||||||
flag="${COULEUR_ROUGE}P${COULEUR_NORMALE} "
|
flag="${COULEUR_ROUGE}P${COULEUR_NORMALE} "
|
||||||
elif [ -f "$Pfile" ]; then
|
elif [ -f "$Pfile" ]; then
|
||||||
flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} "
|
flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} "
|
||||||
|
|
2
ufile
2
ufile
|
@ -11,7 +11,7 @@ Les règles sont spécifiées dans le fichier ~/etc/default/ufile
|
||||||
Dans ce fichier, deux tableaux contiennent les règles applicables:
|
Dans ce fichier, deux tableaux contiennent les règles applicables:
|
||||||
* le tableau RULES contient des règles de la forme pattern:destdir[:renamef] et
|
* le tableau RULES contient des règles de la forme pattern:destdir[:renamef] et
|
||||||
permet de classer des fichiers correspondant à des patterns
|
permet de classer des fichiers correspondant à des patterns
|
||||||
* le tableau NRULES contient des règles de fle forme name:destdir[:renamef] et
|
* le tableau NRULES contient des règles de la forme name:destdir[:renamef] et
|
||||||
permet de classer des fichiers quelconques en spécifiant la règle à utiliser
|
permet de classer des fichiers quelconques en spécifiant la règle à utiliser
|
||||||
|
|
||||||
Les champs sont:
|
Les champs sont:
|
||||||
|
|
Loading…
Reference in New Issue