From e5a147351d3b0647ddfa9f36d85f932d32dcae98 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Sat, 12 Aug 2023 22:23:45 +0400 Subject: [PATCH] =?UTF-8?q?dkbuild:=20impl=C3=A9menter=20-u?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dkbuild | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/dkbuild b/dkbuild index 21f91a5..19aaf81 100755 --- a/dkbuild +++ b/dkbuild @@ -111,10 +111,18 @@ $scriptname build [OPTIONS] [BUILDVARS...] 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. + -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 - 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 - 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 Avec la commande 'checkout', mettre à jour les dépôts avant de faire le 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 version de développement d'un dépôt -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 Ne pas mettre à jour les fichiers. La commande 'copy' devient un NOP si le fichier destination existe. @@ -133,7 +142,7 @@ $scriptname build [OPTIONS] [BUILDVARS...] Construire les images --no-cache 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 -p, --push-image Pousser les images construites vers la registry @@ -2771,12 +2780,16 @@ function build_action() { eval "$SHARED_LOCALS1; $SHARED_LOCALS2" local action=build local machine + local clean_update clean_opt=-X local clone_src_only update_src_only update_src sync_src local build no_cache pull_image local push_image local -a args; args=( "${SHARED_ARGS1[@]}" "${SHARED_ARGS2[@]}" -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 --update-src-only update_src_only=1 --update-src update_src=1 @@ -2786,7 +2799,7 @@ function build_action() { --no-sync-src sync_src=no -b,--build build=1 --no-cache no_cache=1 - -u,--pull-image pull_image=1 + -U,--pull-image pull_image=1 -p,--push-image push_image=1 ) parse_args "$@"; set -- "${args[@]}" @@ -2823,6 +2836,17 @@ function build_action() { die "Pas encore implémenté" #XXX ;; 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 copy copy="$sync_src" default build build="$build" ${no_cache:+no-cache} ${pull_image:+pull} ${push_image:+push} @@ -2870,7 +2894,7 @@ function _build_after() { ## clean function _clean_git_clean() { - LANG=C git clean -d $opt "$@" | + LANG=C git clean -d $clean_opt "$@" | grep -vE '^(Would skip|Skipping) ' | sed -r 's/^Would remove //' } @@ -2882,16 +2906,16 @@ function _clean_git_status() { function clean_action() { eval "$SHARED_LOCALS1" - local opt=-X all= + local clean_opt=-X all= local -a args; args=( "${SHARED_ARGS1[@]}" - -X,--ignored opt=-X - -x,--untracked opt=-x + -X,--ignored clean_opt=-X + -x,--untracked clean_opt=-x -a,--all all=1 ) parse_args "$@"; set -- "${args[@]}" - [ -n "$all" ] && opt=-x + [ -n "$all" ] && clean_opt=-x edebug "clean_action" ensure_projdir