-#!/bin/sh
-
-if test $# -ne 1; then
- echo >&2 "usage: $0 <version file>"
- exit 1
-fi
+#!/usr/bin/env bash
+(($# > 1)) && { echo >&2 "usage: $0 [<version file>]"; exit 1; }
GVF="$1"
-DEF_VER="unnamed_version"
+DEF_VER="unnamed_version"
LF='
'
# First see if there is a version file (included in release tarballs),
# then try git-describe, then default.
-if test -f VERSION
-then
+if [[ -f VERSION ]]; then
VN=$(cat VERSION) || VN="$DEF_VER"
-elif test -d .git -o -f .git &&
+elif [[ -d .git || -f .git ]] &&
VN=$(git describe --abbrev=4 HEAD 2>/dev/null) &&
case "$VN" in
*$LF*) (exit 1) ;;
fi
VN=$(expr "$VN" : v*'\(.*\)')
+echo "$VN"
-if test -r $GVF
-then
- VC=$(sed -e 's/^GIT_VERSION = //' <$GVF)
-else
- VC=unset
+[[ -z "$GVF" ]] && exit 0
+if [[ -r "$GVF" ]]; then
+ pattern='^#define GIT_VERSION "'
+ VC=$(grep "$pattern" < "$GVF" | sed -e "s/$pattern//; s/\"$//")
+ [[ "$VN" == "$VC" ]] && exit 0
fi
-test "$VN" = "$VC" || {
- echo >&2 "GIT_VERSION = $VN"
- echo "GIT_VERSION = $VN" >$GVF
-}
+echo >&2 "new git version: $VN"
+echo "/** \\file ${GVF##*/} Auto-generated version file. Do not edit. */" >$GVF
+echo "#define GIT_VERSION \"$VN\"" >> $GVF