#! /bin/sh

if [ -z "$1" -o -n "$3" ]; then
   echo "Usage: $0 new_tag [branch]" >&2
   exit 1
elif [ -z "$2" ]; then
   tag="$1"
else
   tag="$1"
   branch="$2"
fi

. `dirname $0`/split_tag.sh &&
split_tag $tag $branch

git checkout "$branch" &&
echo "
version = '$tag'
major = $major
minor = $minor
micro = $micro
release_level = '$state'
serial = $serial
version_info = (major, minor, micro, release_level, serial)" > sqlobject/__version__.py &&

sqlo_tag="SQLObject $tag" &&
sqlo_tag_len=${#sqlo_tag} &&
sed -Ei "1s/^SQLObject [1-9].+\$/$sqlo_tag/" README.rst &&
sed -Ei "2s/^==========+\$/`python -c \"print('='*$sqlo_tag_len)\"`/" README.rst &&

if [ "$state" = alpha ]; then
    trove_cls='3 - Alpha'
elif [ "$state" = beta -o "$state" = 'release candidate' ]; then
    trove_cls='4 - Beta'
elif [ "$state" = final -o "$state" = post ]; then
    trove_cls='5 - Production\/Stable'
else
    echo "Error: unknown state $state" >&2
    exit 1
fi &&
sed -Ei "s/Development Status :: .+\",\$/Development Status :: $trove_cls\",/" setup.py &&

if [ "$state" = final -o "$state" = post ]; then
    dbad=devscripts/build-all-docs
fi &&

`git var GIT_EDITOR` $dbad docs/News.rst ANNOUNCE.rst sqlobject/__version__.py README.rst setup.cfg setup.py &&
exec git commit --message="Release $tag" devscripts/build-all-docs docs/News.rst ANNOUNCE.rst sqlobject/__version__.py README.rst setup.cfg setup.py
