-
Notifications
You must be signed in to change notification settings - Fork 110
/
getversion
executable file
·46 lines (40 loc) · 1.53 KB
/
getversion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env bash
# Make sure we're running from the root git repository, not whatever submodule
# we could have been called from.
pushd $(dirname "$0") > /dev/null
VERSION=$(perl -e 'while(<>){print $1 if (/^PACKAGE_VERSION='\''(.+)'\''$/)}' < configure)
BUILDNUMBER=dev
# Call git describe, and convert it to a semi-semantic version, like
# 5.0.0-alpha.0+dev.52.g123abc
generate_dev_version() {
git describe | perl -pe 's/(.*)-([0-9]*)-(g[0-9a-f]*)/\1+dev.\2.\3/'
}
# If we are in a Git repository and have git installed, build the version
# string using the latest tag in case it's reachable
if type git >/dev/null 2>&1 && [ -d '.git' ] ; then
# Check for tag reachability, in case of shallow clones we might not
# be able to use git describe since the commit which was tagged is
# unreachable even if we have pulled the tags. If we can reach it,
# overwrite the VERSION from autoconf with the output, else append
# HEAD commit info
if git describe >/dev/null 2>&1 ; then
VERSION=$(generate_dev_version)
else
VERSION+=+
VERSION+=$(git rev-parse --short HEAD)
fi
# If not a git repository and VERSION file exists, use version string from file.
elif [[ -s ./VERSION ]]; then
VERSION=$(awk -F' build ' '{print $1}' ./VERSION)
BUILDNUMBER=$(awk -F' build ' '{print $2}' ./VERSION)
fi
FLAG="${1:-noflag}"
if [ "$FLAG" = '--short' ] ; then
echo "${VERSION}"
else
if [[ ${BUILDNUMBER} = 'dev' && -f BUILD_NUMBER ]] ; then
BUILDNUMBER=`cat BUILD_NUMBER`
fi
echo "${VERSION} build ${BUILDNUMBER}"
fi
popd > /dev/null