1ced56a00Sopenharmony_ci#!/bin/bash
2ced56a00Sopenharmony_ci# SPDX-License-Identifier: MIT
3ced56a00Sopenharmony_ci# Copyright 2020 Google LLC
4ced56a00Sopenharmony_ci#
5ced56a00Sopenharmony_ci# Use of this source code is governed by an MIT-style
6ced56a00Sopenharmony_ci# license that can be found in the LICENSE file or at
7ced56a00Sopenharmony_ci# https://opensource.org/licenses/MIT.
8ced56a00Sopenharmony_ci
9ced56a00Sopenharmony_ciset -e -u -o pipefail
10ced56a00Sopenharmony_cicd "$(dirname "$0")/.."
11ced56a00Sopenharmony_ci
12ced56a00Sopenharmony_ciusage()
13ced56a00Sopenharmony_ci{
14ced56a00Sopenharmony_ci	echo "Usage: $0 prepare|publish VERS" 1>&2
15ced56a00Sopenharmony_ci	echo "  e.g. $0 prepare 1.0" 1>&2
16ced56a00Sopenharmony_ci	echo "       $0 publish 1.0" 1>&2
17ced56a00Sopenharmony_ci	exit 2
18ced56a00Sopenharmony_ci}
19ced56a00Sopenharmony_ci
20ced56a00Sopenharmony_ciif [ $# != 2 ]; then
21ced56a00Sopenharmony_ci	usage
22ced56a00Sopenharmony_cifi
23ced56a00Sopenharmony_ci
24ced56a00Sopenharmony_ciPUBLISH=false
25ced56a00Sopenharmony_cicase $1 in
26ced56a00Sopenharmony_cipublish)
27ced56a00Sopenharmony_ci	PUBLISH=true
28ced56a00Sopenharmony_ci	;;
29ced56a00Sopenharmony_ciprepare)
30ced56a00Sopenharmony_ci	;;
31ced56a00Sopenharmony_ci*)
32ced56a00Sopenharmony_ci	usage
33ced56a00Sopenharmony_ci	;;
34ced56a00Sopenharmony_ciesac
35ced56a00Sopenharmony_ciVERS=$2
36ced56a00Sopenharmony_ciPKG=fsverity-utils-$VERS
37ced56a00Sopenharmony_ci
38ced56a00Sopenharmony_ciprepare_release()
39ced56a00Sopenharmony_ci{
40ced56a00Sopenharmony_ci	git checkout -f
41ced56a00Sopenharmony_ci	git clean -fdx
42ced56a00Sopenharmony_ci	./scripts/run-tests.sh
43ced56a00Sopenharmony_ci	git clean -fdx
44ced56a00Sopenharmony_ci
45ced56a00Sopenharmony_ci	major=$(echo "$VERS" | cut -d. -f1)
46ced56a00Sopenharmony_ci	minor=$(echo "$VERS" | cut -d. -f2)
47ced56a00Sopenharmony_ci	month=$(LC_ALL=C date +%B)
48ced56a00Sopenharmony_ci	year=$(LC_ALL=C date +%Y)
49ced56a00Sopenharmony_ci
50ced56a00Sopenharmony_ci	sed -E -i -e "/FSVERITY_UTILS_MAJOR_VERSION/s/[0-9]+/$major/" \
51ced56a00Sopenharmony_ci		  -e "/FSVERITY_UTILS_MINOR_VERSION/s/[0-9]+/$minor/" \
52ced56a00Sopenharmony_ci		  include/libfsverity.h
53ced56a00Sopenharmony_ci	sed -E -i "/Version:/s/[0-9]+\.[0-9]+/$VERS/" \
54ced56a00Sopenharmony_ci		  lib/libfsverity.pc.in
55ced56a00Sopenharmony_ci	sed -E -i -e "/^% /s/fsverity-utils v[0-9]+(\.[0-9]+)+/fsverity-utils v$VERS/" \
56ced56a00Sopenharmony_ci		  -e "/^% /s/[a-zA-Z]+ 2[0-9]{3}/$month $year/" \
57ced56a00Sopenharmony_ci		  man/*.[1-9].md
58ced56a00Sopenharmony_ci	git commit -a --signoff --message="v$VERS"
59ced56a00Sopenharmony_ci	git tag --sign "v$VERS" --message="$PKG"
60ced56a00Sopenharmony_ci
61ced56a00Sopenharmony_ci	git archive "v$VERS" --prefix="$PKG/" > "$PKG.tar"
62ced56a00Sopenharmony_ci	tar xf "$PKG.tar"
63ced56a00Sopenharmony_ci	( cd "$PKG" && make check )
64ced56a00Sopenharmony_ci	rm -r "$PKG"
65ced56a00Sopenharmony_ci}
66ced56a00Sopenharmony_ci
67ced56a00Sopenharmony_cipublish_release()
68ced56a00Sopenharmony_ci{
69ced56a00Sopenharmony_ci	gpg --detach-sign --armor "$PKG.tar"
70ced56a00Sopenharmony_ci	DESTDIR=/pub/linux/kernel/people/ebiggers/fsverity-utils/v$VERS
71ced56a00Sopenharmony_ci	kup mkdir "$DESTDIR"
72ced56a00Sopenharmony_ci	kup put "$PKG.tar" "$PKG.tar.asc" "$DESTDIR/$PKG.tar.gz"
73ced56a00Sopenharmony_ci	git push
74ced56a00Sopenharmony_ci	git push --tags
75ced56a00Sopenharmony_ci}
76ced56a00Sopenharmony_ci
77ced56a00Sopenharmony_ciif $PUBLISH; then
78ced56a00Sopenharmony_ci	publish_release
79ced56a00Sopenharmony_cielse
80ced56a00Sopenharmony_ci	prepare_release
81ced56a00Sopenharmony_cifi
82