#!/bin/sh

# $1 - os name {linux|darwin|win}
# $2 - [optional] raw version string "vX.Y-patchN-sha1". as from `git describe'
#      (see below)

set -eu
#set -x

croak() {
	echo "$0: $*" >&2
	exit 1
}

[ $# -ge 1 ] || croak "missing OS argument"
os=$1

if [ $# -eq 2 ] && [ "$2" ]; then
	v0=$2
else
	cmd="git describe --tags --abbrev=12"
	v0=$($cmd) || croak "odd; command '$cmd' failed"
fi

# strip off the 'v' prefix, if any
v0=${v0#v}

case $os in
	linux)
		v=$v0
		;;
	darwin|win)
		# split version string using a '-' separator
		IFS='-'
		set -- $v0
		v1=$1
		if [ $# -gt 1 ]; then
			v1=$v1.$2
		else
			v1=$v1.0
		fi
		case $os in
			darwin)
				v=$v1
				;;
			win)
				# always add '0' as the 4:th digit
				v=$v1.0
				;;
		esac
		;;
	*)
		v='git.missing.please.hardcode.version'
		;;
esac
printf '%s' $v