#!/bin/sh

set -e

if [ ! -d src ] ; then
	echo "Please run me in bip sources root." >&2 
	exit 1
fi

release_version="$1"
release_name="$2"
: ${MAKEOPTS:=-j -l4}

set_version() {
	local release_version
	release_version="${1}"
	sed -i -e '/^AC_INIT/s/\(, \[\)[^]]*/\1'${release_version}'/' configure.ac
}

get_version() {
	grep -e '^AC_INIT' configure.ac | cut -d [ -f 3 | cut -d ] -f 1
}

make_distcheck() {
	# prepare sources
	autoreconf -i -Wall
	# Create makefile, use all possible options
	./configure --enable-oidentd
	# run distcheck
	if ! make ${MAKEOPTS} distcheck; then
	    echo "'make distcheck' fails, please try again." >&2
		return 1
	else
		true
	fi
}

git log > ChangeLog
if [ -n "$release_version" ]; then
	set_version "${release_version}"
	make_distcheck || exit 1

	git commit -a --gpg-sign -m "Update version and ChangeLog for bip-${release_version} release."
	TAG_COMMENT="Release ${release_version}"
	if [ -n "${release_name}" ]; then
		TAG_COMMENT="${TAG_COMMENT} '${release_name}'"
	fi
	git tag --sign -m "${TAG_COMMENT}" release-${release_version}

	set_version "${release_version}-git"
	git commit -a --gpg-sign -m "Add -git to version string."

	echo "See bip-${release_version}.tar.gz"
else
	make_distcheck || exit 1

	tarname=bip-$(get_version)
	prefix=bip-$(date +%Y%m%d)

	rm -rf "${tarname}"  "${prefix}"
	tar -xzf "${tarname}".tar.gz
	rm -rf "${tarname}".tar.gz

	mv "${tarname}" "${prefix}"
	tar -czf "${prefix}".tar.gz "${prefix}"
	rm -rf "${prefix}"

	# Revert the ChangeLog.
	git checkout HEAD -- ChangeLog

	echo "See ${prefix}.tar.gz"
fi

# cleanup
git clean -d -i -e "bip-*.tar.gz"

