@@ -38,29 +38,36 @@ curl -sS -o mongo-c-driver.tar.gz -L "https://api.github.com/repos/mongodb/mongo
38
38
tar xzf mongo-c-driver.tar.gz --directory " ${mongoc_dir} " --strip-components=1
39
39
40
40
# C Driver needs VERSION_CURRENT to compute BUILD_VERSION.
41
- # RegEx pattern to match SemVer strings. See https://semver.org/.
42
- declare -r semver_regex=" ^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$"
43
- if echo " ${mongoc_version} " | perl -ne " $( printf ' exit 1 unless /%s/' " ${semver_regex} " ) " ; then
44
- # If $VERSION is already SemVer compliant, use as-is.
45
- echo " ${mongoc_version} " > | " ${mongoc_dir} /VERSION_CURRENT"
41
+ if [[ -f " ${mongoc_dir} /VERSION_CURRENT" ]]; then
42
+ : # Use the existing VERSION_CURRENT bundled with the release tarball.
46
43
else
47
- # Otherwise, use the tag name of the latest release to construct a prerelease version string.
48
-
49
- # Extract "tag_name" from latest Github release.
50
- declare build_version
51
- build_version=$( curl -sS -H " Accept: application/vnd.github.v3+json" https://api.github.com/repos/mongodb/mongo-c-driver/releases/latest | perl -ne ' print for /"tag_name": "(.+)"/' )
52
-
53
- # Assert the tag name is a SemVer string via errexit.
54
- echo " ${build_version} " | perl -ne " $( printf ' exit 1 unless /%s/' " ${semver_regex} " ) "
55
-
56
- # Bump to the next minor version, e.g. 1.0.1 -> 1.1.0.
57
- build_version=" $( echo " ${build_version} " | perl -ne " $( printf ' /%s/; print $+{major} . "." . ($+{minor}+1) . ".0"' " ${semver_regex} " ) " ) "
58
-
59
- # Append a prerelease tag, e.g. 1.1.0-pre+<version>.
60
- build_version=" $( printf " %s-pre+%s" " ${build_version} " " ${mongoc_version} " ) "
61
-
62
- # Use the constructed prerelease build version when building the C driver.
63
- echo " ${build_version} " > | " ${mongoc_dir} /VERSION_CURRENT"
44
+ # RegEx pattern to match SemVer strings. See https://semver.org/.
45
+ declare -r semver_regex=" ^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$"
46
+ if echo " ${mongoc_version} " | perl -ne " $( printf ' exit 1 unless /%s/' " ${semver_regex} " ) " ; then
47
+ # If $mongoc_version is already SemVer compliant, use as-is.
48
+ echo " ${mongoc_version} " > | " ${mongoc_dir} /VERSION_CURRENT"
49
+ else
50
+ # Otherwise, use the tag name of the latest release to construct a prerelease version string.
51
+
52
+ # Extract "tag_name" from latest Github release.
53
+ declare build_version
54
+ build_version=" $( curl -sS -H " Accept: application/vnd.github+json" https://api.github.com/repos/mongodb/mongo-c-driver/releases/latest | perl -ne ' print for /"tag_name": "(.+)"/' ) "
55
+
56
+ # Assert the tag name is a SemVer string via errexit.
57
+ echo " ${build_version} " | perl -ne " exit 1 unless /${semver_regex} /" || {
58
+ echo " could not obtain a build version from the tag name of the latest release" 1>&2
59
+ exit 1
60
+ }
61
+
62
+ # Bump to the next minor version, e.g. 1.0.1 -> 1.1.0.
63
+ build_version=" $( echo " ${build_version} " | perl -ne " $( printf ' /%s/; print $+{major} . "." . ($+{minor}+1) . ".0"' " ${semver_regex} " ) " ) "
64
+
65
+ # Append a prerelease tag, e.g. 1.1.0-pre+<version>.
66
+ build_version=" $( printf " %s-pre+%s" " ${build_version} " " ${mongoc_version} " ) "
67
+
68
+ # Use the constructed prerelease build version when building the C driver.
69
+ echo " ${build_version} " > | " ${mongoc_dir} /VERSION_CURRENT"
70
+ fi
64
71
fi
65
72
66
73
# shellcheck source=/dev/null
0 commit comments