#!/bin/sh -e

# This script does all the steps necessary for doing a new upstream release. It
# should solely be used by upstream developers, distributors do not need to
# worry about it.

[ -z "`git status -s`" ] || {
    echo "Uncommitted changes, aborting" >&2
    exit 1
}

# remove backup files
find . -type f -name "*.~?~" -exec rm {} \;

# remove compiled gschema file
rm -f data/glib-2.0/schemas/gschemas.compiled

# remove Python 3 cache files
rm -rf pasaffe/__pycache__
rm -rf pasaffe_lib/__pycache__
rm -rf tests/__pycache__
rm -rf .pytest_cache

version=$(grep '(UNRELEASED)' NEWS | cut -f1 -d' ')
[ -n "$version" ] || {
    echo "no UNRELEASED in NEWS" >&2
    exit 1
}

./setup.py build
./setup.py sdist
./setup.py clean -a

set -x

sed -i -r "s/(^[[:space:]]*version[[:space:]]*=[[:space:]]*').*\$/\\1${version}',/" setup.py
sed -i "s/(UNRELEASED)/$(date '+(%Y-%m-%d)')/" NEWS
#dch -v ${version}-1 "New version"
git add -A
git commit -a -m "release $version"
git tag "$version"

git2cl > ChangeLog
./setup.py sdist -d ..
./setup.py clean -a
rm ChangeLog
gpg --armor --sign --detach-sig ../pasaffe-$version.tar.gz
