#!/bin/bash

set -e

while [ $1 ]
do
	OPT=$1
	shift
	if [ "$OPT" == "--commit" ]
	then
		OPT_COMMIT=y
		continue
	fi
	if [ "$OPT" == "--sign" ]
	then
		OPT_SIGN=y
		continue
	fi
	if [ "$OPT" == "--no-git-clean" ]
	then
		OPT_NO_GIT_CLEAN=y
		continue
	fi
	echo $0: Unknown option: "$OPT" 1>&2
	exit 1
done


#
# Clean working dirctory
#

if [ ! $OPT_NO_GIT_CLEAN ]
then
	git reset --hard HEAD
	git clean -dfx ../..
fi
git checkout debian/changelog

if [ ! -d module ]
then
	mkdir module
	cp -a ../../drivers/gator/* module/
fi

#
# Update changelog
#

if [ "$DEBEMAIL" == "" -o "$DEBFULLNAME" == "" ]
then
	export DEBEMAIL='jon.medhurst@linaro.org'
	export DEBFULLNAME='Jon Medhurst (Tixy)'
fi
dch -i -c debian/changelog CHANGE_MSG
dch -r -c debian/changelog ""

TIMESTAMP="$(date -u +%Y%m%d%H%M%S)"
sed -i -e "1 s/ubuntu1/-$TIMESTAMP/" debian/changelog

GIT_COMMIT="$(git rev-parse HEAD)"
GIT_REMOTE_AND_BRANCH="$(git show-ref | sed -n 's,'$GIT_COMMIT'.*refs/remotes/\(.*\),\1,p' | sed -n 1p)"
GIT_REMOTE=$(echo $GIT_REMOTE_AND_BRANCH | awk -F/ '{print $1}')
GIT_BRANCH=$(echo $GIT_REMOTE_AND_BRANCH | awk -F/ '{print $2}')
GIT_URL="$(git remote -v show $GIT_REMOTE | sed -n 's/.*Fetch URL: \(.*\)/\1/p')"
GIT_TAG="$(git describe --exact-match --tags $GIT_COMMIT 2>/dev/null || echo "")"

CHANGE_MSG="Automatically packaged from git repository:\n"
CHANGE_MSG="$CHANGE_MSG    URL:    $GIT_URL\n"
CHANGE_MSG="$CHANGE_MSG    Tag:    $GIT_TAG\n"
CHANGE_MSG="$CHANGE_MSG    Branch: $GIT_BRANCH\n"
CHANGE_MSG="$CHANGE_MSG    Commit: $GIT_COMMIT"
sed -i -e "s%CHANGE_MSG%$CHANGE_MSG%" debian/changelog

echo $CHANGE_MSG

FULL_VERSION="$(sed -n '1s/.*(\(.*\)).*/\1/p' debian/changelog)"
VERSION="$(echo $FULL_VERSION | sed 's/\([0-9.]*\).*/\1/')"
sed "s/__VERSION__/$VERSION/g" debian/dkms.conf.in > debian/dkms.conf
sed "s/__VERSION__/$VERSION/g" debian/gator-module-dkms.install.in > debian/gator-module-dkms.install


#
# Commit changes
#

if [ $OPT_COMMIT ]
then
	git add debian/changelog
	git commit -s -m "gator-$FULL_VERSION: Automated packaging"
fi


#
# Build packages
#

if [ ! $OPT_SIGN ]
then
	DEBUILD_SIGN="-us -uc"
fi

debuild $DEBUILD_SIGN -aarmhf -b
debuild --no-tgz-check $DEBUILD_SIGN -S
