#!/bin/sh
# subdirmk - release script
# Copyright various contributors - see top level README.
# SPDX-License-Identifier: LGPL-2.0-or-later
# There is NO WARRANTY.

set -e

fail () { echo >&2 "error: $*"; $dryrun exit 1; }

case "$1" in
-n)	dryrun=: ; shift ;;
-*)	fail "unknown option $1" ;;
esac

x () { echo >&2 " $*"; $dryrun "$@"; }

head=$(git rev-parse HEAD~0)
for branch in master tested; do
	bv=$(git rev-parse refs/heads/$branch)
	test $bv = $head || fail "error: HEAD=$head, $branch=$bv"
done

status=$(git status --porcelain --ignored)
if [ "$status" ]; then
	printf >&2 '%s\n' "$status"
	fail 'tree not sufficiently clean'
fi

v="$1"

case "$v" in
subdirmk/*) v=${v#subdirmk/} ;;
esac

case "$v" in
[0-9]*.*) ;;
*) fail 'bad version' ;;
esac

tag=subdirmk/$v
key=0x559AE46C2D6B6D3265E7CBA1E3E3392348B50D39

export GPG_TTY=`tty` # wtf
x git tag -s -u $key -m "subdirmk $v" $tag

x git push origin master $tag

$dryrun echo 'done.'
