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
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