mirror of
https://github.com/juanfont/headscale.git
synced 2024-12-27 14:45:52 -05:00
6aedc1111b
target calls the new version-at-commit.sh script which will automatically populate the version variable inside the Headscale binary. Once we start tagging releases on the git tree, that will come in handy. The Makefile also has a 'test' target (does nothing yet, no tests yet) and a 'dev' target, which runs linters, tests, and finally builds.
40 lines
1.1 KiB
Bash
Executable File
40 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e -o pipefail
|
|
commit="$1"
|
|
versionglob="v[0-9].[0-9]*.[0-9]*"
|
|
devsuffix=".dev"
|
|
if [ -z "$commit" ]; then
|
|
commit=`git log -n1 --first-parent "--format=format:%h"`
|
|
fi
|
|
|
|
# automatically assign version
|
|
#
|
|
# handles the following cases:
|
|
#
|
|
# 0. no tags on the repository. Print "dev".
|
|
#
|
|
# 1. no local modifications and commit is directly tagged. Print tag.
|
|
#
|
|
# 2. no local modifications and commit is not tagged. Take greatest version tag in repo X.Y.Z and assign X.Y.(Z+1). Print that + $devsuffix + $timestamp.
|
|
#
|
|
# 3. local modifications. Print "dev".
|
|
|
|
tags=$(git tag)
|
|
if [[ -z "$tags" ]]; then
|
|
echo "dev"
|
|
elif `git diff --quiet 2>/dev/null`; then
|
|
tagged=$(git tag --points-at "$commit")
|
|
if [[ -n "$tagged" ]] ; then
|
|
echo $tagged
|
|
else
|
|
nearest_tag=$(git describe --tags --abbrev=0 --match "$versionglob" "$commit")
|
|
v=$(echo $nearest_tag | perl -pe 's/(\d+)$/$1+1/e')
|
|
isodate=$(TZ=UTC git log -n1 --format=%cd --date=iso "$commit")
|
|
ts=$(TZ=UTC date --date="$isodate" "+%Y%m%d%H%M%S")
|
|
echo "${v}${devsuffix}${ts}"
|
|
fi
|
|
else
|
|
echo "dev"
|
|
fi
|