@@ -34,8 +34,8 @@ for V in ${CURRENTVERS} ${RELEASEVERS} ; do
34
34
echo " Illegal zero version '${V} '" 1>&2
35
35
exit 1
36
36
fi
37
- # Sanity check: Must be valid semver.
38
- if ! [[ ${V} =~ ^(0| [1-9][0-9]* )\. (0| [1-9][0-9]* )\. (0| [1-9][0-9]* )(-(( 0 | [1 - 9 ][0 - 9 ]*| [0 - 9 ]* [a- zA- Z- ][0 - 9 a- zA- Z- ]* )(\.(0 | [1 - 9 ][0 - 9 ]*| [0 - 9 ]* [a- zA- Z- ][0 - 9 a- zA- Z- ]* )) * ))? (\+ ([0-9a-zA-Z-]+ (\. [0-9a-zA-Z-]+)* ))? $ ]] ; then
37
+ # Sanity check: Must start with a valid semver.
38
+ if ! [[ ${V} =~ ^(0| [1-9][0-9]* )\. (0| [1-9][0-9]* )\. (0| [1-9][0-9]* )(-(( 0 | [1 - 9 ][0 - 9 ]*| [0 - 9 ]* [a- zA- Z- ][0 - 9 a- zA- Z- ]* )(\.(0 | [1 - 9 ][0 - 9 ]*| [0 - 9 ]* [a- zA- Z- ][0 - 9 a- zA- Z- ]* )) * ))? (\+ ([0-9a-zA-Z-]+ (\. [0-9a-zA-Z-]+)* ))? ]] ; then
39
39
echo " Invalid version '${V} '" 1>&2
40
40
exit 1
41
41
fi
@@ -48,27 +48,24 @@ if [ -z "${RELEASEVERS}" ] ; then
48
48
RELEASEVERS=" ${CURRENTVERS/ -* } "
49
49
;;
50
50
" prerelease" )
51
- # Split "1.2.3-pre.4" into "1.2.3" and "pre.4".
52
- read -r PRE POST < <( echo " ${CURRENTVERS/ -/ } " )
53
- # Remove non-numeric parts of "pre.4" like "pre".
54
- POST=" $( echo " ${POST} " | sed -e ' s/[^0-9.]//g' -e ' s/\.*$//' ) "
55
- # Remove leading, trailing, or repeated "." characters.
56
- POST=" $( echo " ${POST} " | sed -e ' s/^\.*//' -e ' s/\.*$//' -e ' s/\.\.*/./g' ) "
57
- if [ " ${POST} " = " " ] ; then
58
- POST=" 0"
51
+ # Replace [-.]pre[-.$] with [-.]rc[-.$].
52
+ RELEASEVERS=" $( echo " ${CURRENTVERS} " | sed -E ' s/([-.])pre([-.]|$)/\1rc\2/' ) "
53
+ # If no [-.]rc[-.$], append -rc.0.
54
+ if ! [[ ${RELEASEVERS} =~ [-.]rc([-.]| $) ]] ; then
55
+ RELEASEVERS=" ${RELEASEVERS} -rc.0"
59
56
fi
60
- # Set "1.2.3-rc.4".
61
- RELEASEVERS=" ${PRE} -rc.${POST} "
62
57
;;
63
58
esac
64
59
fi
65
60
echo " ::set-output name=release::${RELEASEVERS} "
66
61
67
62
# Derive a new bumped version from the release version.
68
- # Change "1.2.3-rc.4" to "1.2.3.4".
69
- VERSION=" $( echo " ${RELEASEVERS} " | sed -e ' s/-/./g' -e ' s/rc//' -e ' s/\.\.*/./g' ) "
70
- # Increment "1.2.3.4" to "1.2.3.5".
71
- VERSION=" $( echo " ${VERSION} " | awk -F. -v OFS=. ' {$NF += 1 ; print}' ) "
72
- # Convert back to valid semver syntax "1.2.3-pre.5".
73
- VERSION=" $( echo " ${VERSION} " | sed -e ' s/\([^.]*\)\.\([^.]*\)\.\([^.]*\)\(\.\(.*\)\)\{0,1\}/\1.\2.\3-pre.\5/' -e ' s/\.$//' ) "
63
+ # Increment the last number in the string.
64
+ VERSION=" $( echo " ${RELEASEVERS} " | gawk ' { start=match($0, /(.*)([0-9]+)([^0-9]*)$/, a) ; a[2] += 1 ; printf("%s%s%s", a[1], a[2], a[3]) }' ) "
65
+ # Replace [-.]rc[-.$] with pre.
66
+ VERSION=" $( echo " ${VERSION} " | sed -E ' s/([-.])rc([-.]|$)/\1pre\2/' ) "
67
+ # If no [-.]pre[-.$], then append -pre.
68
+ if ! [[ ${VERSION} =~ [-.]pre([-.]| $) ]] ; then
69
+ VERSION=" ${VERSION} -pre"
70
+ fi
74
71
echo " ::set-output name=bumped::${VERSION} "
0 commit comments