diff --git a/lib/ulib/ptools b/lib/ulib/ptools index a620fc4..8b0db09 100644 --- a/lib/ulib/ptools +++ b/lib/ulib/ptools @@ -145,7 +145,7 @@ function pver() { local setbeta= local setrc= local setrelease= - local setmetadata= + local setmetadata= addmetadata= local vcsmetadata= parse_opts "${PRETTYOPTS[@]}" \ --help '$exit_with pver_display_help' \ @@ -177,7 +177,8 @@ function pver() { -b,--beta '$action=update; setalpha=; setbeta=1; setrc=; setrelease=' \ -r,--rc '$action=update; setalpha=; setbeta=; setrc=1; setrelease=' \ -R,--release,--final '$action=update; setalpha=; setbeta=; setrc=; setrelease=1' \ - -m:,--metadata: '$action=update; set@ setmetadata' \ + -m:,--metadata:,--set-metadata: '$action=update; set@ setmetadata' \ + --add-metadata: '$action=update; set@ addmetadata' \ -M,--vcs-metadata '$action=update; vcsmetadata=1' \ @ args -- "$@" && set -- "${args[@]}" || { eerror "$args"; return 1; } @@ -232,7 +233,6 @@ function pver() { version="$(git cat-file blob "$branch:$name" 2>/dev/null)" fi fi - [ "$action" == show ] || allow_empty= [ -n "$version" -o -n "$allow_empty" ] || version=0.0.0 # Conversion éventuelle du numéro de version @@ -241,7 +241,7 @@ function pver() { if [ "$convert" == auto ]; then [ -z "$valid" ] && convert=1 fi - if [ -n "$convert" ]; then + if [ -n "$convert" -a -n "$version" ]; then mversion="$(awkrun version="$version" ' function nbdot(s) { gsub(/[^.]/, "", s) @@ -408,6 +408,7 @@ BEGIN { esac elif [ "$action" == update ]; then + [ -z "$version" -a -n "$allow_empty" ] && return 1 [ -n "$valid" ] || { eerror "Numéro de version invalide: $version"; return 1; } if [ -n "$file" ]; then @@ -446,17 +447,56 @@ BEGIN { # incrémenter les numéros de version if [ "$incversion" == auto ]; then - if [ -n "$setrelease" -o -n "$setprelease" -o -n "$setmetadata" ]; then + if [ -n "$setrelease" -o -n "$setprelease" -o -n "$setmetadata" -o -n "$addmetadata" ]; then incversion= else incversion=menu fi fi if [ "$incversion" == menu ]; then - psemver_copy x; psemver_incmajor x; psemver_setprelease "$setprelease" x; psemver_setmetadata "$setmetadata" x; psemver_setvar versionx x - psemver_copy z; psemver_incminor z; psemver_setprelease "$setprelease" z; psemver_setmetadata "$setmetadata" z; psemver_setvar versionz z - psemver_copy p; psemver_incpatchlevel p; psemver_setprelease "$setprelease" p; psemver_setmetadata "$setmetadata" p; psemver_setvar versionp p - psemver_copy k; psemver_setprelease "$setprelease" k; psemver_setmetadata "$setmetadata" k; psemver_setvar versionk k + psemver_copy x; { + psemver_incmajor x + psemver_setprelease "$setprelease" x + if [ -n "$addmetadata" ]; then + [ -n "$setmetadata" ] && psemver_setmetadata "$setmetadata" x + psemver_addmetadata "$addmetadata" x + else + psemver_setmetadata "$setmetadata" x + fi + psemver_setvar versionx x + } + psemver_copy z; { + psemver_incminor z + psemver_setprelease "$setprelease" z + if [ -n "$addmetadata" ]; then + [ -n "$setmetadata" ] && psemver_setmetadata "$setmetadata" z + psemver_addmetadata "$addmetadata" z + else + psemver_setmetadata "$setmetadata" z + fi + psemver_setvar versionz z + } + psemver_copy p; { + psemver_incpatchlevel p + psemver_setprelease "$setprelease" p + if [ -n "$addmetadata" ]; then + [ -n "$setmetadata" ] && psemver_setmetadata "$setmetadata" p + psemver_addmetadata "$addmetadata" p + else + psemver_setmetadata "$setmetadata" p + fi + psemver_setvar versionp p + } + psemver_copy k; { + psemver_setprelease "$setprelease" k + if [ -n "$addmetadata" ]; then + [ -n "$setmetadata" ] && psemver_setmetadata "$setmetadata" k + psemver_addmetadata "$addmetadata" k + else + psemver_setmetadata "$setmetadata" k + fi + psemver_setvar versionk k + } nextvs=( "$versionx : maj incompatibles de l'API (-x)" "$versionz : maj compatibles de l'API (-z)" @@ -482,7 +522,7 @@ BEGIN { esac # Quand on incrémente, réinitialiser la valeur de prérelease et metadata psemver_setprelease - psemver_setmetadata + [ -z "$addmetadata" ] && psemver_setmetadata fi # spécifier prerelease @@ -503,6 +543,9 @@ BEGIN { if [ -n "$setmetadata" ]; then psemver_setmetadata "$setmetadata" || { eerror "Identifiant de build invalide: $setmetadata"; return 1; } fi + if [ -n "$addmetadata" ]; then + psemver_addmetadata "$addmetadata" || { eerror "Identifiant de build invalide: $addmetadata"; return 1; } + fi # afficher le résultat final psemver_setvar version diff --git a/pver b/pver index 7efbc43..cb10543 100755 --- a/pver +++ b/pver @@ -30,6 +30,10 @@ OPTIONS --show Afficher le numéro de version. C'est l'action par défaut + --allow-empty + Supporter que la version puisse ne pas être spécifiée ni trouvée. Dans + ce cas, ne pas assumer que la version effective est 0.0.0 + Avec --show et --update, ne rien afficher si la version est vide. --check Vérifier que le numéro de version est conforme aux règles du versionage sémantique @@ -88,7 +92,10 @@ OPTIONS Spécifier un identifiant de build, à ajouter au numéro de version. -M, --vcs-metadata Spécifier l'identifiant à partir de la révision actuelle dans le - gestionnaire de version. Note: pour le moment, seul git est supporté." + gestionnaire de version. Note: pour le moment, seul git est supporté. + --add-metadata ID + Ajouter l'identifiant spécifié à la valeur actuelle, au lieu de la + remplacer. Séparer l'identifiant de la valeur précédente avec un '.'" } pver "$@"