chiark / gitweb /
tests: Provide make-release script
[secnet.git] / tests / make-release
1 #!/bin/sh
2 # subdirmk - release script
3 # Copyright various contributors - see top level README.
4 # SPDX-License-Identifier: LGPL-2.0-or-later
5 # There is NO WARRANTY.
6
7 set -e
8
9 fail () { echo >&2 "error: $*"; $dryrun exit 1; }
10
11 case "$1" in
12 -n)     dryrun=: ; shift ;;
13 -*)     fail "unknown option $1" ;;
14 esac
15
16 x () { echo >&2 " $*"; $dryrun "$@"; }
17
18 head=$(git rev-parse HEAD~0)
19 for branch in master tested; do
20         bv=$(git rev-parse refs/heads/$branch)
21         test $bv = $head || fail "error: HEAD=$head, $branch=$bv"
22 done
23
24 status=$(git status --porcelain --ignored)
25 if [ "$status" ]; then
26         printf >&2 '%s\n' "$status"
27         fail 'tree not sufficiently clean'
28 fi
29
30 v="$1"
31
32 case "$v" in
33 subdirmk/*) v=${v#subdirmk/} ;;
34 esac
35
36 case "$v" in
37 [0-9]*.*) ;;
38 *) fail 'bad version' ;;
39 esac
40
41 tag=subdirmk/$v
42 key=0x559AE46C2D6B6D3265E7CBA1E3E3392348B50D39
43
44 export GPG_TTY=`tty` # wtf
45 x git tag -s -u $key -m "subdirmk $v" $tag
46
47 x git push origin master $tag
48
49 $dryrun echo 'done.'