Skip to content

Commit a5583d7

Browse files
authored
chore: use bash-compatible SemVer regex (leanprover#2475)
1 parent 4a41e7e commit a5583d7

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

.github/workflows/ci.yml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,29 @@ jobs:
6161
id: set
6262
run: |
6363
TAG_NAME=${GITHUB_REF##*/}
64-
# From https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
65-
# with "v" prepended.
66-
SEMVER_REGEX="^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$"
64+
65+
# From https://github.com/fsaintjacques/semver-tool/blob/master/src/semver
66+
67+
NAT='0|[1-9][0-9]*'
68+
ALPHANUM='[0-9]*[A-Za-z-][0-9A-Za-z-]*'
69+
IDENT="$NAT|$ALPHANUM"
70+
FIELD='[0-9A-Za-z-]+'
71+
72+
SEMVER_REGEX="\
73+
^[vV]?\
74+
($NAT)\\.($NAT)\\.($NAT)\
75+
(\\-(${IDENT})(\\.(${IDENT}))*)?\
76+
(\\+${FIELD}(\\.${FIELD})*)?$"
77+
6778
if [[ ${TAG_NAME} =~ ${SEMVER_REGEX} ]]; then
79+
echo "Tag ${TAG_NAME} matches SemVer regex, with groups ${BASH_REMATCH[1]} ${BASH_REMATCH[2]} ${BASH_REMATCH[3]} ${BASH_REMATCH[4]}"
6880
echo "LEAN_VERSION_MAJOR=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT
6981
echo "LEAN_VERSION_MINOR=${BASH_REMATCH[2]}" >> $GITHUB_OUTPUT
7082
echo "LEAN_VERSION_PATCH=${BASH_REMATCH[3]}" >> $GITHUB_OUTPUT
7183
echo "LEAN_SPECIAL_VERSION_DESC=${BASH_REMATCH[4]}" >> $GITHUB_OUTPUT
7284
echo "RELEASE_TAG=$TAG_NAME" >> $GITHUB_OUTPUT
85+
else
86+
echo "Tag ${TAG_NAME} did not match SemVer regex."
7387
fi
7488
7589
build:

0 commit comments

Comments
 (0)