@@ -14,6 +14,12 @@ tag_context=${TAG_CONTEXT:-repo}
1414suffix=${PRERELEASE_SUFFIX:- beta}
1515verbose=${VERBOSE:- true}
1616
17+ if [[ -z " ${suffix} " ]]
18+ then
19+ echo " ::error::PRERELEASE_SUFFIX is set to an empty string"
20+ exit 1
21+ fi
22+
1723# since https://github.blog/2022-04-12-git-security-vulnerability-announced/ runner uses?
1824if [[ " ${source} " =~ ^\. $ ]]
1925then
@@ -84,6 +90,9 @@ case "${tag_context}" in
8490 ;;
8591esac
8692
93+ echo " Last tag: ${tag} "
94+ echo " Last pre-release tag: ${pre_tag} "
95+
8796
8897# if there are none, start tags at INITIAL_VERSION which defaults to 0.0.0
8998if [[ -z " ${tag} " ]]
114123# echo log if verbose is wanted
115124if ${verbose}
116125then
117- echo " ${log} "
126+ echo " Git logs"
127+ echo " ---------------------------"
128+ echo " ${log} "
129+ echo " ---------------------------"
118130fi
119131
120132case " ${log} " in
121- * #major* ) new=$( semver -i major " ${tag} " ) ; part=" major" ;;
122- * #minor* ) new=$( semver -i minor " ${tag} " ) ; part=" minor" ;;
123- * #patch* ) new=$( semver -i patch " ${tag} " ) ; part=" patch" ;;
124- * #none* )
125- echo " Default bump was set to none. Skipping..."
126- echo " new_tag=${tag} " >> " ${GITHUB_OUTPUT} "
127- echo " tag=${tag} " >> " ${GITHUB_OUTPUT} "
128- exit 0
129- ;;
133+ * #major* ) part=" major" ;;
134+ * #minor* ) part=" minor" ;;
135+ * #patch* ) part=" patch" ;;
136+ * #none* ) part=" none" ;;
130137 * )
131138 if [[ " ${default_semvar_bump} " == " none" ]]
132139 then
133- echo " Default bump was set to none. Skipping..."
134- echo " new_tag=${tag} " >> " ${GITHUB_OUTPUT} "
135- echo " tag=${tag} " >> " ${GITHUB_OUTPUT} "
136- exit 0
140+ part=" none"
137141 else
138- new= $( semver -i " ${default_semvar_bump} " " ${tag} " ) ; part= ${default_semvar_bump}
142+ part= " ${default_semvar_bump} "
139143 fi
140144 ;;
141145esac
146+ echo " Bumping type set to ${part} "
147+ echo " part=${part} " >> " ${GITHUB_OUTPUT} "
148+
149+ if [[ " ${part} " == " none" ]]
150+ then
151+ echo " Default bump was set to none. Skipping..."
152+ # shellcheck disable=SC2129
153+ echo " new_tag=${tag} " >> " ${GITHUB_OUTPUT} "
154+ echo " tag=${tag} " >> " ${GITHUB_OUTPUT} "
155+ exit 0
156+ fi
142157
143158if ${pre_release}
144159then
145- # Already a prerelease available, bump it
146- if [[ " ${pre_tag} " == * " ${new} " * ]]
160+ if [[ " ${tag} " == " ${pre_tag} " ]]
147161 then
148- new=$( semver -i prerelease " ${pre_tag} " --preid " ${suffix} " ) ; part=" pre-${part} "
162+ echo " First pre-release tag detected, create initial pre-release tag using bump type ${part} "
163+ new=$( semver -i " pre${part} " " ${pre_tag} " --preid " ${suffix} " )
149164 else
150- new=" ${new} -${suffix} .1" ; part=" pre-${part} "
165+ echo " Pre-release tag already exists, increment it based on bump type ${part} "
166+ new=$( semver -i " prerelease" " ${pre_tag} " --preid " ${suffix} " )
167+ next_release=$( semver -i " ${part} " " ${pre_tag} " )
168+ if [[ " ${new} " != ${next_release} * ]]
169+ then
170+ # the next release is different higher as the next pre-release, therefore bump a new pre
171+ # release part (e.g. from 1.1.1-beta.2 to 1.2.0-beta.0)
172+ new=$( semver -i " pre${part} " " ${pre_tag} " --preid " ${suffix} " )
173+ fi
151174 fi
175+ else
176+ new=$( semver -i " ${part} " " ${tag} " ) ;
152177fi
153178
154- echo " ${part} "
155-
156179# prefix with 'v'
157180if ${with_v}
158181then
174197
175198# set outputs
176199echo " new_tag=${new} " >> " ${GITHUB_OUTPUT} "
177- echo " part=${part} " >> " ${GITHUB_OUTPUT} "
178200
179201# use dry run to determine the next tag
180202if ${dryrun}
0 commit comments