dkbuild: calcul de la version à partir d'un fichier ou d'un chemin

This commit is contained in:
Jephté Clain 2023-01-05 08:01:30 +04:00
parent b006bb44cd
commit 306e77f307
1 changed files with 79 additions and 5 deletions

84
dkbuild
View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# -*- 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
source "$(dirname "$0")/lib/ulib/ulib" || exit 1 source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire DEFAULTS urequire DEFAULTS ptools xmlsupport
SELF="$script" SELF="$script"
TEMPLATEDIR="$scriptdir/lib/dkbuild/templates" TEMPLATEDIR="$scriptdir/lib/dkbuild/templates"
@ -18,7 +18,7 @@ USAGE
OPTIONS OPTIONS
--hdk, --help-dkbuild --hdk, --help-dkbuild
Afficher l'aide sur le format du fichier dkbuild Afficher l'aide sur le format du fichier dkbuild
--hrf, --help-reference --href, --help-reference
Afficher la référence sur les commandes utilisables dans un fichier Afficher la référence sur les commandes utilisables dans un fichier
dkbuild dkbuild
@ -164,6 +164,14 @@ $scriptname dump [OPTIONS]
function display_help_dkbuild() { function display_help_dkbuild() {
uecho "\ uecho "\
OPTIONS
--help Aide générale
* --hdk Aide sur le format du fichier dkbuild
--href Référence sur les commandes utilisables dans un fichier dkbuild
DKBUILD
=======
Un fichier dkbuild est un script shell utilisé pour construire une ou plusieurs Un fichier dkbuild est un script shell utilisé pour construire une ou plusieurs
images docker. images docker.
@ -452,6 +460,14 @@ utilisés comme tags (i.e IMAGE:DIST et IMAGE:VERSION-DIST)"
function display_help_reference() { function display_help_reference() {
uecho "\ uecho "\
OPTIONS
--help Aide générale
--hdk Aide sur le format du fichier dkbuild
* --href Référence sur les commandes utilisables dans un fichier dkbuild
REFERENCE
=========
## fonctions d'affichage ## fonctions d'affichage
USAGE: USAGE:
@ -472,6 +488,21 @@ USAGE:
## setversion -- spécifier la version par défaut ## setversion -- spécifier la version par défaut
USAGE: setversion VERSION
Les paramètres optionnels sont
* from-file=FILE
prendre la version depuis le fichier spécifié. les formats pom.xml et
VERSION.txt sont supportés
* from-repo=REPO
calculer la version depuis le dépôt git spécifié
* from-glob=GLOB
calculer la version depuis le chemin spécifié
* extract=REGEXP
à partir de la valeur calculée par l'un des paramètres from-*, matcher
l'expression régulière au format AWK, et prendre comme version la valeur de
l'expression \$1
## version -- vérifier la version courante ## version -- vérifier la version courante
## setenv -- spécifier une variable d'environnement ## setenv -- spécifier une variable d'environnement
@ -1071,7 +1102,50 @@ function load_environ() {
function define_functions_env() { function define_functions_env() {
function setversion() { function setversion() {
[ -n "$SETVERSION_DONE" ] && return [ -n "$SETVERSION_DONE" ] && return
SETVERSION="$1" local from_file from_repo from_glob extract
while [ $# -gt 0 ]; do
case "$1" in
from-file|file) from_file=.;;
from-file=*|file=*)
from_file="${1#from-}"; from_file="${from_file#file=}"
;;
from-repo|repo) from_repo=.;;
from-repo=*|repo=*)
from_repo="${1#from-}"; from_repo="${from_repo#repo=}"
;;
from-glob=*|glob=*)
from_glob="${1#from-}"; from_glob="${from_glob#glob=}"
;;
extract=*)
extract="${1#extract=}"
;;
*=*) ewarn "setversion: $1: argument ignoré";;
*) break;;
esac
shift
done
if [ -n "$from_file" ]; then
if [ -d "$from_file" ]; then
setx SETVERSION=pver --sw "$from_file" || die
elif [[ "$from_file" == *.xml ]]; then
setx SETVERSION=pver -E "$from_file" || die
else
setx SETVERSION=pver -F "$from_file" || die
fi
elif [ -n "$from_repo" ]; then
die "setversion from-repo: pas encore implémenté" #XXX
elif [ -n "$from_glob" ]; then
SETVERSION="$(list_all . "$from_glob" | sort -rn | head -1)"
else
SETVERSION="$1"
fi
if [ -n "$extract" ]; then
extract="${extract//\//\\/}"
SETVERSION="$(awk -v version="$SETVERSION" "BEGIN {
if (match(version, /$extract/, vs)) { print vs[1] }
else { print version }
}")"
fi
SETVERSION_DONE=1 SETVERSION_DONE=1
} }
function dist() { function dist() {
@ -2781,7 +2855,7 @@ while [ $# -gt 0 ]; do
case "$1" in case "$1" in
--help) args+=("$1"); shift; continue;; --help) args+=("$1"); shift; continue;;
--hdk|--help-dkbuild) args+=("$1"); shift; continue;; --hdk|--help-dkbuild) args+=("$1"); shift; continue;;
--hrf|--help-reference) args+=("$1"); shift; continue;; --href|--help-reference) args+=("$1"); shift; continue;;
-*|*=*) # option quelconque: inférer build -*|*=*) # option quelconque: inférer build
args+=(build) args+=(build)
break break
@ -2796,7 +2870,7 @@ set -- "${args[@]}" "$@"
args=(+ args=(+
--help '$exit_with display_help' --help '$exit_with display_help'
--hdk,--help-dkbuild '$exit_with display_help_dkbuild' --hdk,--help-dkbuild '$exit_with display_help_dkbuild'
--hrf,--help-reference '$exit_with display_help_reference' --href,--help-reference '$exit_with display_help_reference'
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"