mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Yeah... that looks better. Thanks @mikeller. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| # shellcheck disable=SC2164
 | |
| 
 | |
| # consistently name all builds, regardless of OS or desktop/mobile
 | |
| #
 | |
| # we do need to be able to create three digit (M.m.p) and four digit (M.m.p.c) version strings
 | |
| # default is VERSION_EXTENSION version - an argument of '4' or '3' gets you a digits only version string
 | |
| #
 | |
| # we hardcode a base version - this will rarely change
 | |
| # (we actually haven't discussed a situation where it would change...)
 | |
| SUBSURFACE_BASE_VERSION=6.0
 | |
| 
 | |
| # little silly helper functions
 | |
| croak() {
 | |
| 	echo "$0: $*" >&2
 | |
| 	exit 1
 | |
| }
 | |
| croak_usage() {
 | |
| 	croak "Usage: $0 [3|4]"
 | |
| }
 | |
| 
 | |
| if [[ $# -gt 1 ]] ; then croak_usage ; fi
 | |
| if [[ $# -eq 1 ]] ; then
 | |
| 	if [[ $1 != "4" && $1 != "3" ]] ; then croak_usage ; fi
 | |
| 	DIGITS="$1"
 | |
| fi
 | |
| 
 | |
| # figure out where we are in the file system
 | |
| cd "$(dirname "$0")/../"
 | |
| export SUBSURFACE_SOURCE=$PWD
 | |
| 
 | |
| # add the build number to this as 'patch' component
 | |
| # if we run in an environment where we are given a build number (e.g. CICD builds)
 | |
| # we just grab that - otherwise we have to figure it out on the fly
 | |
| if [ ! -f latest-subsurface-buildnumber ] ; then
 | |
| 	# figure out the most recent build number, given our own git history
 | |
| 	# this assumes that (a) we are in a checked out git tree and
 | |
| 	# (b) we have the ability to check out another git repo
 | |
| 	# in situations where either of these isn't true, it's the caller's
 | |
| 	# responsibility to ensure that the latest-subsurface-buildnumber file exists
 | |
| 	if [ ! -d "$SUBSURFACE_SOURCE/nightly-builds" ] ; then
 | |
| 		git clone https://github.com/subsurface/nightly-builds &> /dev/null || croak "failed to clone nightly-builds repo"
 | |
| 	fi
 | |
| 	cd nightly-builds
 | |
| 	git fetch &> /dev/null
 | |
| 	LAST_BUILD_BRANCHES=$(git branch -a --sort=-committerdate --list | grep remotes/origin/branch-for | head -50 | cut -d/ -f3)
 | |
| 	for LAST_BUILD_BRANCH in $LAST_BUILD_BRANCHES "not-found" ; do
 | |
| 		LAST_BUILD_SHA=$(cut -d- -f 3 <<< "$LAST_BUILD_BRANCH")
 | |
| 		git -C "$SUBSURFACE_SOURCE" merge-base --is-ancestor "$LAST_BUILD_SHA" HEAD && break
 | |
| 	done
 | |
| 	[ "not-found" = "$LAST_BUILD_BRANCH" ] && croak "can't find a build number for the current working tree"
 | |
| 	git checkout "$LAST_BUILD_BRANCH" &> /dev/null || croak "failed to check out $LAST_BUILD_BRANCH in nightly-builds"
 | |
| 	BUILDNR=$(<./latest-subsurface-buildnumber)
 | |
| 	cd "$SUBSURFACE_SOURCE"
 | |
| 	VERSION_EXTENSION="-"
 | |
| 	VERSION_EXTENSION+=$(git log --pretty="oneline" "${LAST_BUILD_SHA}...HEAD" | wc -l | tr -d '[:space:]')
 | |
| 	VERSION_EXTENSION+="-"
 | |
| 	[ "$VERSION_EXTENSION" = "-0-" ] && VERSION_EXTENSION="-"
 | |
| 	VERSION_EXTENSION+="local"
 | |
| else
 | |
| 	# use the files included with the sources
 | |
| 	BUILDNR=$(<"$SUBSURFACE_SOURCE/latest-subsurface-buildnumber")
 | |
| 	VERSION_EXTENSION=""
 | |
| 	if [ -f "$SUBSURFACE_SOURCE/latest-subsurface-buildnumber-extension" ] ; then
 | |
| 		VERSION_EXTENSION="-"
 | |
| 		VERSION_EXTENSION+=$(<"$SUBSURFACE_SOURCE/latest-subsurface-buildnumber-extension")
 | |
| 	fi
 | |
| fi
 | |
| 
 | |
| COMMITS_SINCE=$(tr -cd "[:digit:]" <<<"$VERSION_EXTENSION")
 | |
| [[ -z $COMMITS_SINCE ]] && COMMITS_SINCE="0"
 | |
| 
 | |
| if [[ $DIGITS == "3" ]] ; then
 | |
| 	VERSION="${SUBSURFACE_BASE_VERSION}.${BUILDNR}"
 | |
| elif [[ $DIGITS == "4" ]] ; then
 | |
| 	VERSION="${SUBSURFACE_BASE_VERSION}.${BUILDNR}.${COMMITS_SINCE}"
 | |
| else
 | |
| 	VERSION="${SUBSURFACE_BASE_VERSION}.${BUILDNR}${VERSION_EXTENSION}"
 | |
| fi
 | |
| printf '%s' "$VERSION"
 |