mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-30 23:51:03 +01:00 
			
		
		
		
	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
 |