#!/bin/bash

# Usage: dadch

# Wrapper around dch for Debathena.  Increments the version number
# according to Debathena rules if the current version has been
# released, and leaves it alone otherwise.

: ${DEBATHENA_APT=/mit/debathena/apt}

if [ -e debian/changelog ]; then
    debian=debian
elif [ "$(basename "$PWD")" = debian ] && [ -e changelog ]; then
    debian=.
else
    echo "Cannot find debian/changelog." >&2
    exit 1
fi

package=$(head -n1 "$debian/changelog" | sed -n 's/^\([^ ]*\).*$/\1/ p')
version=$(head -n1 "$debian/changelog" | sed -n 's/^[^ ]* (\([^)]*\)).*$/\1/ p')
if [ -z "$package" ] || [ -z "$version" ]; then
    echo "Invalid debian/changelog." >&2
fi

dch_opts=()

newversion=$(
    newversion=$version
    dpkg-awk -f <(zcat ${DEBATHENA_APT}*/dists/*/*/source/Sources.gz) \
	'Package:^'"$package"'$' -- Version | \
	sed -n 's/Version: // p' | \
	(
	    while read aptversion; do
		if dpkg --compare-versions "$aptversion" '>=' "$newversion"; then
		    newversion=$(
			echo "$aptversion" | \
			    sed -n 's/debathena\([0-9]*\)/ \1/ p' | \
			    (
			        if read -r base darelease; then
				    echo "${base}debathena$(($darelease + 1))"
				else
				    echo "${aptversion}debathena1"
				fi
			    )
		    )
		fi
	    done
	    echo "$newversion"
	)
)

if [ "$newversion" != "$version" ]; then
    echo "Changing version to $newversion"
    dch_opts+=(--newversion "$newversion" --distribution unstable)
fi

dch "${dch_opts[@]}" "$@"
