dkbuild: implémenter -u

This commit is contained in:
Jephté Clain 2023-08-12 22:23:45 +04:00
parent 776cd96fd7
commit e5a147351d
1 changed files with 34 additions and 10 deletions

44
dkbuild
View File

@ -111,10 +111,18 @@ $scriptname build [OPTIONS] [BUILDVARS...]
Spécifier la valeur d'un argument de build. Cette valeur remplace la Spécifier la valeur d'un argument de build. Cette valeur remplace la
valeur par défaut spécifiée dans le fichier de build. valeur par défaut spécifiée dans le fichier de build.
-u, --clean-update
Avant de faire le build, faire un clean, suivi de git pull. C'est la
méthode préférée pour mettre à jour le dépôt s'il y a des fichiers
synchronisé avec la commande 'copy', parce que sinon les fichiers
sources (mis à jour par git pull) sont désynchronisés d'avec les
fichiers destination.
--clone-src-only --clone-src-only
Ne faire que cloner les dépôts sources Ne faire que cloner les dépôts sources mentionnés avec la commande
'checkout'
--update-src-only --update-src-only
Ne faire que mettre à jour les dépôts sources Ne faire que mettre à jour les dépôts sources mentionnés avec la
commande 'checkout'
--update-src --update-src
Avec la commande 'checkout', mettre à jour les dépôts avant de faire le Avec la commande 'checkout', mettre à jour les dépôts avant de faire le
build. C'est la valeur par défaut. build. C'est la valeur par défaut.
@ -125,7 +133,8 @@ $scriptname build [OPTIONS] [BUILDVARS...]
Ne pas mettre à jour le dépôt, préférer la synchronisation depuis la Ne pas mettre à jour le dépôt, préférer la synchronisation depuis la
version de développement d'un dépôt version de développement d'un dépôt
-s, --sync-src -s, --sync-src
Avec la commande 'copy', effectuer la mise à jour des fichiers Avec la commande 'copy', effectuer la mise à jour des fichiers. C'est la
valeur par défaut si on construit l'image
--no-sync-src --no-sync-src
Ne pas mettre à jour les fichiers. La commande 'copy' devient un NOP si Ne pas mettre à jour les fichiers. La commande 'copy' devient un NOP si
le fichier destination existe. le fichier destination existe.
@ -133,7 +142,7 @@ $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
-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
Pousser les images construites vers la registry Pousser les images construites vers la registry
@ -2771,12 +2780,16 @@ function build_action() {
eval "$SHARED_LOCALS1; $SHARED_LOCALS2" eval "$SHARED_LOCALS1; $SHARED_LOCALS2"
local action=build local action=build
local machine local machine
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 pull_image
local push_image local push_image
local -a args; args=( local -a args; args=(
"${SHARED_ARGS1[@]}" "${SHARED_ARGS2[@]}" "${SHARED_ARGS1[@]}" "${SHARED_ARGS2[@]}"
-m:,--machine: machine= -m:,--machine: machine=
-u,--clean-update clean_update=1
-X,--clean-ignored clean_opt=-X
-x,--clean-untracked clean_opt=-x
--clone-src-only clone_src_only=1 --clone-src-only clone_src_only=1
--update-src-only update_src_only=1 --update-src-only update_src_only=1
--update-src update_src=1 --update-src update_src=1
@ -2786,7 +2799,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
-u,--pull-image pull_image=1 -U,--pull-image pull_image=1
-p,--push-image push_image=1 -p,--push-image push_image=1
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
@ -2823,6 +2836,17 @@ function build_action() {
die "Pas encore implémenté" #XXX die "Pas encore implémenté" #XXX
;; ;;
build) build)
if [ -n "$clean_update" ]; then
edebug "clean"
_clean_git_clean -f || die
edebug "update"
git pull || die
edebug "sync"
[ -n "$build" ] && sync_src=1
fi
default checkout checkout="$update_src" default checkout checkout="$update_src"
default copy copy="$sync_src" default copy copy="$sync_src"
default build build="$build" ${no_cache:+no-cache} ${pull_image:+pull} ${push_image:+push} default build build="$build" ${no_cache:+no-cache} ${pull_image:+pull} ${push_image:+push}
@ -2870,7 +2894,7 @@ function _build_after() {
## clean ## clean
function _clean_git_clean() { function _clean_git_clean() {
LANG=C git clean -d $opt "$@" | LANG=C git clean -d $clean_opt "$@" |
grep -vE '^(Would skip|Skipping) ' | grep -vE '^(Would skip|Skipping) ' |
sed -r 's/^Would remove //' sed -r 's/^Would remove //'
} }
@ -2882,16 +2906,16 @@ function _clean_git_status() {
function clean_action() { function clean_action() {
eval "$SHARED_LOCALS1" eval "$SHARED_LOCALS1"
local opt=-X all= local clean_opt=-X all=
local -a args; args=( local -a args; args=(
"${SHARED_ARGS1[@]}" "${SHARED_ARGS1[@]}"
-X,--ignored opt=-X -X,--ignored clean_opt=-X
-x,--untracked opt=-x -x,--untracked clean_opt=-x
-a,--all all=1 -a,--all all=1
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
[ -n "$all" ] && opt=-x [ -n "$all" ] && clean_opt=-x
edebug "clean_action" edebug "clean_action"
ensure_projdir ensure_projdir