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