#!/bin/sh
# Print additional version information for non-release trees.

usage() {
	echo "Usage: $0 [srctree]" >&2
	exit 1
}

cd "${1:-.}" || usage

# Check for git and a git repo.
if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
	# Do we have an untagged version?
	if git name-rev --tags HEAD | grep -E '^HEAD[[:space:]]+(.*~[0-9]*|undefined)$' > /dev/null; then
		if tag=`git describe 2>/dev/null`; then
			echo $tag | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
		else
			printf '%s%s' -g $head
		fi
	fi

	# Are there uncommitted changes?
	git update-index --refresh --unmerged > /dev/null
	if git diff-index --name-only HEAD | grep -v "^scripts/package" \
	    | read dummy; then
		printf '%s' -dirty
	fi

	# All done with git
	exit
fi

# Check for mercurial and a mercurial repo.
if hgid=`hg id 2>/dev/null`; then
	tag=`printf '%s' "$hgid" | cut -d' ' -f2`

	# Do we have an untagged version?
	if [ -z "$tag" -o "$tag" = tip ]; then
		id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
		printf '%s%s' -hg "$id"
	fi

	# Are there uncommitted changes?
	# These are represented by + after the changeset id.
	case "$hgid" in
		*+|*+\ *) printf '%s' -dirty ;;
	esac

	# All done with mercurial
	exit
fi

# Check for svn and a svn repo.
if rev=`svn info 2>/dev/null | grep '^Revision'`; then
	rev=`echo $rev | awk '{print $NF}'`
	changes=`svn status 2>/dev/null | grep '^[AMD]' | wc -l`

	# Are there uncommitted changes?
	if [ $changes != 0 ]; then
		printf -- '-svn%s%s' "$rev" -dirty
	else
		printf -- '-svn%s' "$rev"
	fi

	# All done with svn
	exit
fi
