influxdb/.circleci/scripts/get-version

49 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
set -o nounset \
-o errexit \
-o pipefail
REGEX_TAG='v([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)'
function semver_tags()
{
{
# Sometimes several release tags point to the same commit (see v1.9.0 and
# v1.9.1). This iterates through each tag and ensures that it conforms to
# semantic versioning requirements. Afterwards, the tags are sorted from
# latest to earliest. This is so packages use the latest version tag.
for tag in $(git tag --points-at HEAD)
do
if [[ ${tag} =~ ^${REGEX_TAG}$ ]]
then
printf '%s\n' "${tag}"
fi
done
} | sort --version-sort --reverse
}
TAG=$(head -n 1 <<<"$(semver_tags)")
# If no tag could be found for the corresponding commit, assume that this
# is being built from an unversioned branch. In which case, this will
# construct a version that is compatible with Debian versioning:
# ${PREFIX}-<< short commit hash >>
if [[ ${TAG} =~ ^${REGEX_TAG}$ ]]
then
cat <<EOF >>"${BASH_ENV}"
export VERSION="${TAG:1}"
export MAJOR=${BASH_REMATCH[1]}
export MINOR=${BASH_REMATCH[2]}
export PATCH=${BASH_REMATCH[3]}
export RELEASE=1
EOF
else
cat <<EOF >>"${BASH_ENV}"
export VERSION="${PREFIX}-$(git rev-parse --short HEAD)"
export MAJOR=
export MINOR=
export PATCH=
export RELEASE=
EOF
fi