#!/bin/sh

#
# This file is part of the Code::Blocks IDE and licensed under the GNU General Public License, version 3
# http://www.gnu.org/licenses/gpl-3.0.html
#
# $Revision$
# $Id$
# $HeadURL$
#


# make sure [git-]svn answers in english
export LC_ALL="C"

REV_FILE=./revision.m4

# let's import OLD_REV (if there)
if [ -f ./.last_revision ]; then
	. ./.last_revision
else
	OLD_REV=0
fi

SVNURL=http://svn.code.sf.net/p/codeblocks/code/trunk
BZRURL="lp:~damien-moore/codeblocks/trunk"

echo "BZR INFO OUTPUT"
echo `bzr info`
echo "BZR INFO URL OUTPUT"
echo `bzr info $BZRURL`

if svn --xml info >/dev/null 2>&1; then
	echo "Using 'svn --xml info' to get the revision"
	REV=`svn --xml info | tr -d '\r\n' | sed -e 's/.*<commit.*revision="\([0-9]*\)".*<\/commit>.*/\1/'`
	LCD=`svn --xml info | tr -d '\r\n' | sed -e 's/.*<commit.*<date>\([0-9\-]*\)\T\([0-9\:]*\)\..*<\/date>.*<\/commit>.*/\1 \2/'`
elif svn --info >/dev/null 2>&1; then
	echo "Using 'svn info' to get the revision"
	REV=`svn info | grep "^Revision:" | cut -d" " -f2`
	LCD=`svn info | grep "^Last Changed Date:" | cut -d" " -f4,5`
#elif git svn --version >/dev/null 2>&1; then
#	echo "Using 'git svn info' to get the revision"
#	REV=`git svn info | grep "^Revision:" | cut -d" " -f2`
#	LCD=`git svn info | grep "^Last Changed Date:" | cut -d" " -f4,5`
elif git log --max-count=1 >/dev/null 2>&1; then
	echo "Using 'git log --graph' to get the revision"
	REV=`git log --graph | grep 'git-svn-id' | head -n 1 | grep -o -e "@\([0-9]*\)" | tr -d '@ '`
	LCD=`git log --date=iso --max-count=1 | grep -o -e "Date: \(.*\)" | cut -d ' ' -f 2- | sed 's/^ *//' | cut -f -2 -d ' '`
elif bzr log $BZRURL --show-ids -l 1 >/dev/null 2>&1; then
	echo "Using 'bzr log --show-ids' to get the revision"
	REV=`bzr log $BZRURL --show-ids -l 1 | grep revision-id | sed -e 's/.*:trunk:\([0-9]*\)/\1/'`
	LCD=`bzr log $BZRURL --show-ids -l 1 | grep -o -e "timestamp: \(.*\)" | cut -d ' ' -f 3- | cut -f -2 -d ' '`
elif bzr log --show-ids -l 1 >/dev/null 2>&1; then
	echo "Using 'bzr log --show-ids' to get the revision"
	REV=`bzr log --show-ids -l 1 | grep revision-id | sed -e 's/.*:trunk:\([0-9]*\)/\1/'`
	LCD=`bzr log --show-ids -l 1 | grep -o -e "timestamp: \(.*\)" | cut -d ' ' -f 3- | cut -f -2 -d ' '`
else
	REV=0
	LCD=""
fi

echo "Found revision: '${REV}' '${LCD}'"

if [ "x$REV" != "x$OLD_REV" -o ! -r $REV_FILE ]; then
	echo "m4_define([SVN_REV], $REV)" > $REV_FILE
	echo "m4_define([SVN_REVISION], 16.01svn$REV)" >> $REV_FILE
	echo "m4_define([SVN_DATE], $LCD)" >> $REV_FILE

	# Also change the revision number in debian/changelog for package versioning
	DCH=`which dch 2> /dev/null`
	if [ "x$DCH" != "x" ]; then
		if [ -x "$DCH" ]; then
			AKT_REV=`sed -e 's/.*svn\([0-9]*\).*/\1/' -e 'q' < debian/changelog`
			if [ $REV -gt $AKT_REV ]; then
				dch -v 16.01svn$REV "New svn revision"
			fi
		fi
	else
		mv debian/changelog debian/changelog.tmp
		sed "1 s/(16.01svn[^-)]*/(16.01svn$REV/" < debian/changelog.tmp > debian/changelog
		rm debian/changelog.tmp
	fi
fi

echo "OLD_REV=$REV" > ./.last_revision

exit 0
