| 
									
										
										
										
											2013-02-16 23:54:17 +01:00
										 |  |  | #!/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 | 
					
						
							| 
									
										
										
										
											2023-12-07 04:00:32 -08:00
										 |  |  | 	cmd="git describe --match "v[0-9]*" --abbrev=12" | 
					
						
							| 
									
										
										
										
											2015-04-07 10:48:31 -07:00
										 |  |  | 	v0=$($cmd) || v0=$(cat .gitversion) || croak "odd; command '$cmd' failed" | 
					
						
							| 
									
										
										
										
											2013-02-16 23:54:17 +01:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # strip off the 'v' prefix, if any | 
					
						
							|  |  |  | v0=${v0#v} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | case $os in | 
					
						
							|  |  |  | 	linux) | 
					
						
							|  |  |  | 		v=$v0 | 
					
						
							|  |  |  | 		;; | 
					
						
							| 
									
										
										
										
											2014-10-29 12:51:45 -07:00
										 |  |  | 	darwin) | 
					
						
							| 
									
										
										
										
											2013-02-23 20:38:30 -08:00
										 |  |  | 		# just the dots in the version string - this way we can | 
					
						
							|  |  |  | 		# count them | 
					
						
							| 
									
										
										
										
											2013-02-24 10:48:04 +01:00
										 |  |  | 		IFS=. | 
					
						
							|  |  |  | 		set -- $v0		# split $v0 using $IFS separator | 
					
						
							|  |  |  | 		dots=$(($# - 1))	# use positional argument count | 
					
						
							| 
									
										
										
										
											2013-02-16 23:54:17 +01:00
										 |  |  | 		# split version string using a '-' separator | 
					
						
							| 
									
										
										
										
											2013-02-24 10:48:05 +01:00
										 |  |  | 		IFS=- | 
					
						
							| 
									
										
										
										
											2013-02-16 23:54:17 +01:00
										 |  |  | 		set -- $v0 | 
					
						
							| 
									
										
										
										
											2013-02-23 20:38:30 -08:00
										 |  |  | 		v=$1 | 
					
						
							|  |  |  | 		# do we need to add another digit? | 
					
						
							|  |  |  | 		# We know there are 1 or 2 dots in $v, so if it's just one | 
					
						
							|  |  |  | 		# or we are trying to get to 4, add one digit | 
					
						
							| 
									
										
										
										
											2014-10-29 12:51:45 -07:00
										 |  |  | 		if [ $dots -eq 1 ]; then | 
					
						
							| 
									
										
										
										
											2013-02-23 20:38:30 -08:00
										 |  |  | 			if [ $# -gt 1 ]; then | 
					
						
							|  |  |  | 				v=$v.$2 | 
					
						
							|  |  |  | 			else | 
					
						
							|  |  |  | 				v=$v.0 | 
					
						
							|  |  |  | 			fi | 
					
						
							|  |  |  | 		fi | 
					
						
							| 
									
										
										
										
											2014-10-29 12:51:45 -07:00
										 |  |  | 		;; | 
					
						
							|  |  |  | 	full|win) | 
					
						
							|  |  |  | 		# just the dots in the version string - this way we can | 
					
						
							|  |  |  | 		# count them | 
					
						
							|  |  |  | 		IFS=. | 
					
						
							|  |  |  | 		set -- $v0		# split $v0 using $IFS separator | 
					
						
							|  |  |  | 		dots=$(($# - 1))	# use positional argument count | 
					
						
							|  |  |  | 		# split version string using a '-' separator | 
					
						
							|  |  |  | 		IFS=- | 
					
						
							|  |  |  | 		set -- $v0 | 
					
						
							|  |  |  | 		v=$1 | 
					
						
							|  |  |  | 		if [ $dots -eq 1 ]; then | 
					
						
							|  |  |  | 			v=$v.0 | 
					
						
							|  |  |  | 		fi | 
					
						
							|  |  |  | 		if [ $# -gt 1 ]; then | 
					
						
							|  |  |  | 			v=$v.$2 | 
					
						
							|  |  |  | 		else | 
					
						
							| 
									
										
										
										
											2013-02-23 20:38:30 -08:00
										 |  |  | 			v=$v.0 | 
					
						
							| 
									
										
										
										
											2013-02-16 23:54:17 +01:00
										 |  |  | 		fi | 
					
						
							|  |  |  | 		;; | 
					
						
							|  |  |  | 	*) | 
					
						
							| 
									
										
										
										
											2013-02-24 10:48:05 +01:00
										 |  |  | 		v=git.missing.please.hardcode.version | 
					
						
							| 
									
										
										
										
											2013-02-16 23:54:17 +01:00
										 |  |  | 		;; | 
					
						
							|  |  |  | esac | 
					
						
							|  |  |  | printf '%s' $v |