@@ -34,8 +34,8 @@ for V in ${CURRENTVERS} ${RELEASEVERS} ; do
3434 echo " Illegal zero version '${V} '" 1>&2
3535 exit 1
3636 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
3939 echo " Invalid version '${V} '" 1>&2
4040 exit 1
4141 fi
@@ -48,27 +48,24 @@ if [ -z "${RELEASEVERS}" ] ; then
4848 RELEASEVERS=" ${CURRENTVERS/ -* } "
4949 ;;
5050 " 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"
5956 fi
60- # Set "1.2.3-rc.4".
61- RELEASEVERS=" ${PRE} -rc.${POST} "
6257 ;;
6358 esac
6459fi
6560echo " ::set-output name=release::${RELEASEVERS} "
6661
6762# 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
7471echo " ::set-output name=bumped::${VERSION} "
0 commit comments