utiliser les fonctions psemver_*

menu du choix de la nouvelle version
This commit is contained in:
Jephte CLAIN 2014-01-18 11:11:38 +04:00
parent 3b34e2c029
commit 4ff8ed26a9
1 changed files with 40 additions and 22 deletions

View File

@ -3,7 +3,7 @@
source "$(dirname "$0")/ulib/ulib" || exit 1; urequire DEFAULTS semver
function display_help() {
uecho "$scriptname: gérer des numéros de version
uecho "$scriptname: gérer des numéros de version selon les règles du versionnage sémantique v2.0.0 (http://semver.org/)
USAGE
$scriptname [options]
@ -19,8 +19,8 @@ OPTIONS
--show
Afficher le numéro de version. C'est l'action par défaut
--check
Vérifier que le numéro de version est conforme aux règles des versions
sémantiques (http://semver.org/)
Vérifier que le numéro de version est conforme aux règles du versionnage
sémantique
--eq VERSION
--ne VERSION
--lt VERSION
@ -34,8 +34,8 @@ OPTIONS
same et diff comparent aussi la valeur des metadata
-v, --set-version VERSION
Spécifier un nouveau numéro de version qui écrase la valeur actuelle.
Cette option ne devrait pas être utilisée parce qu'elle ne respecte pas
les règles du versionnage sémantique.
Cette option ne devrait pas être utilisée en temps normal parce que cela
va contre les règles du versionnage sémantique.
-u, --update
Mettre à jour le numéro de version.
@ -77,7 +77,7 @@ setprelease=
setalpha=
setbeta=
setrc=
setfinal=
setrelease=
setmetadata=
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
@ -98,10 +98,10 @@ parse_opts "${PRETTYOPTS[@]}" \
-z,--minor '$action=update; incversion=minor' \
-p,--patchlevel '$action=update; incversion=patchlevel' \
-l:,--prelease:,--prerelease: '$action=update; set@ setprelease' \
-a,--alpha '$action=update; setalpha=1; setbeta=; setrc=; setfinal=' \
-b,--beta '$action=update; setalpha=; setbeta=1; setrc=; setfinal=' \
-r,--rc '$action=update; setalpha=; setbeta=; setrc=1; setfinal=' \
-R,--release,--final '$action=update; setalpha=; setbeta=; setrc=; setfinal=1' \
-a,--alpha '$action=update; setalpha=1; setbeta=; setrc=; setrelease=' \
-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' \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
@ -140,12 +140,12 @@ fi
# mis dans la partie "update"
[ -n "$setversion" ] && version="$setversion"
semver_parse "$version" major minor patchlevel prelease metadata valid
psemver_parse "$version"
if [ "$action" == check ]; then
[ -n "$valid" ] || die "Numéro de version invalide: $version"
elif [ "$action" == compare ]; then
semver_parse "$oversion" omajor ominor opatchlevel oprelease ometadata ovalid
psemver_parse "$oversion" o
case "$operator" in
eq|same)
for var in valid major minor patchlevel; do
@ -221,19 +221,37 @@ elif [ "$action" == update ]; then
fi
# incrémenter les numéros de version
[ "$incversion" == auto ] && incversion=minor #menu
[ "$incversion" == auto ] && incversion=menu
if [ "$incversion" == menu ]; then
psemver_copy x; psemver_incmajor x; psemver_setprelease "$setprelease" x; psemver_setvar versionx x
psemver_copy z; psemver_incminor z; psemver_setprelease "$setprelease" z; psemver_setvar versionz z
psemver_copy p; psemver_incpatchlevel p; psemver_setprelease "$setprelease" p; psemver_setvar versionp p
nextvs=(
"$versionx : maj incompatibles de l'API (-x)"
"$versionz : maj compatibles de l'API (-z)"
"$versionp : correction de bugs (-p)"
)
nextv="${nextvs[1]}"
simple_menu nextv nextvs \
-t "Incrémenter le numéro de version" \
-m "Veuillez choisir la prochaine version"
case "${nextv%)}" in
*-x) incversion=major;;
*-z) incversion=minor;;
*-p) incversion=patchlevel;;
esac
fi
case "$incversion" in
menu) eerror "non implémenté";; #XXX
major) semver_incmajor major minor patchlevel prelease metadata;;
minor) semver_incminor major minor patchlevel prelease metadata;;
patchlevel) semver_incpatchlevel major minor patchlevel prelease metadata;;
major) psemver_incmajor;;
minor) psemver_incminor;;
patchlevel) psemver_incpatchlevel;;
esac
# spécifier prerelease
if [ -n "$setfinal" ]; then
semver_setprelease "" major minor patchlevel prelease metadata
if [ -n "$setrelease" ]; then
psemver_setprelease ""
elif [ -n "$setprelease" ]; then
semver_setprelease "$setprelease" major minor patchlevel prelease metadata
psemver_setprelease "$setprelease"
fi
if [ -n "$setalpha" ]; then
:
@ -244,9 +262,9 @@ elif [ "$action" == update ]; then
fi
# spécifier metadata
[ -n "$setmetadata" ] && semver_setmetadata "$setmetadata" major minor patchlevel prelease metadata
[ -n "$setmetadata" ] && psemver_setmetadata "$setmetadata"
semver_setvar version major minor patchlevel prelease metadata
psemver_setvar version
if [ -n "$file" ]; then
echo "$version" >"$file"
fi