diff --git a/uversion b/uversion index 6f22ee7..7e1706e 100755 --- a/uversion +++ b/uversion @@ -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