#!/bin/bash -ex

#
# This script depends on a Go cross-compilation setup as described here:
# http://dave.cheney.net/2012/09/08/an-introduction-to-cross-compilation-with-go
# 
. $HOME/local/bin/golang-crosscompile
git checkout ./debian

if [ -z "$1" ]; then
	PLATFORMS=$(find $GOROOT/pkg -maxdepth 1 -mindepth 1 -type d -exec basename {} \; | grep '_' | sed 's/_/-/g' | egrep -v 'windows|-race' | xargs)
else
	PLATFORMS=$1
fi

make -C doc
DOCROOT=$(mktemp -d)
mkdir -p $DOCROOT/usr/share/doc
cp -r doc/output $DOCROOT/usr/share/doc/hockeypuck
trap "rm -rf $DOCROOT" EXIT

export GOPATH=$(mktemp -d)
trap "rm -rf $GOPATH" EXIT

APPS="github.com/hockeypuck/hockeypuck/cmd/hockeypuck"

go get github.com/hockeypuck/hockeypuck/...
go get launchpad.net/godeps
go install launchpad.net/godeps
(cd $GOPATH/src/github.com/hockeypuck/hockeypuck; $GOPATH/bin/godeps -u dependencies.tsv)

for platform in $PLATFORMS;
do
	for app in $APPS;
	do
		go-$platform install $app
	done
done

BUILD=$(pwd)/build
DIST=$(pwd)/dist
rm -rf $BUILD
mkdir -p $DIST

host_platform=$(go env GOOS)-$(go env GOARCH)

# Detect whether this is a development build or production release
REVNO=$(date '+%Y%m%d')+$(git rev-parse --short HEAD)
DEVBUILD=$(head -1 debian/changelog | grep \~ && echo true || true)
if [ -n "$DEVBUILD" ]; then
	# Append bzr revision and release distro info
	sed -i -e "s/) \([a-zA-Z0-9].*\);/$1~dev$REVNO) $d;/i" debian/changelog
else
	# Append release distro info
	sed -i -e "s/) \([a-zA-Z0-9].*\);/$1~r$REVNO) $d;/i" debian/changelog
fi
version=$(head -1 debian/changelog | sed 's/.*(//;s/).*//;')

for platform in $PLATFORMS;
do
	platform_bin=$(echo $platform | sed 's/-/_/')
	tarfile=$DIST/hockeypuck-$version-$platform.tar
	tar -C instroot -cvf $tarfile .
	tar -C instroot-extra -rvf $tarfile .
	tar -C $DOCROOT -rvf $tarfile .
	mkdir -p $BUILD/$platform/usr/bin
	if [[ $platform != $host_platform ]]; then
		cp -r $GOPATH/bin/$platform_bin/* $BUILD/$platform/usr/bin
	else
		cp -r $GOPATH/bin/hockeypuck $BUILD/$platform/usr/bin
	fi
	tar -C $BUILD/$platform -rvf $tarfile ./usr/bin
	gzip -9f $tarfile
done

git checkout ./debian
#rm -rf $BUILD

exit 0
