2022-09-27 01:37:56 +03:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
if [[ "$1" = "--status" ]]; then
|
|
|
|
gh workflow view release --repo unisonweb/unison
|
|
|
|
gh workflow view release --repo unisonweb/homebrew-unison
|
|
|
|
fi
|
|
|
|
|
2024-03-22 00:54:16 +03:00
|
|
|
prev_tag="$(gh release view --json tagName -t '{{printf .tagName}}')"
|
|
|
|
|
2022-09-27 01:37:56 +03:00
|
|
|
usage() {
|
2024-03-22 00:54:16 +03:00
|
|
|
prev_version="${prev_tag#release/}"
|
|
|
|
prefix="${prev_version%.*}"
|
|
|
|
next_version="${prefix}.$(( ${prev_version##*.} + 1 ))"
|
2024-03-29 07:54:01 +03:00
|
|
|
echo "usage: $0 <version> [ref]"
|
2022-09-27 01:37:56 +03:00
|
|
|
echo ""
|
2024-03-22 00:54:16 +03:00
|
|
|
echo "version: The new version number"
|
2024-03-29 07:54:01 +03:00
|
|
|
echo "ref: The Git revision to make the release from, defaults to 'origin/trunk'"
|
2023-12-13 17:54:11 +03:00
|
|
|
echo ""
|
2024-03-22 00:54:16 +03:00
|
|
|
echo "Try: $0 $next_version"
|
2022-09-27 01:37:56 +03:00
|
|
|
}
|
|
|
|
|
2023-08-08 19:10:48 +03:00
|
|
|
if [[ -z "$1" ]] ; then
|
2022-09-27 01:37:56 +03:00
|
|
|
usage
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2024-03-22 00:54:16 +03:00
|
|
|
if ! command -V gh >/dev/null 2>&1; then
|
2022-09-27 01:37:56 +03:00
|
|
|
echo "Required command \`gh\` not found, find installation instructions here: https://cli.github.com/manual/installation"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2023-12-13 17:54:11 +03:00
|
|
|
if ! [[ "$1" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then
|
|
|
|
echo "Version tag must be of the form 'x.y.z' where x, y, and z are nonnegative integers."
|
2022-09-27 01:37:56 +03:00
|
|
|
usage
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
version="${1}"
|
2024-05-16 01:07:42 +03:00
|
|
|
src=${2:-origin/trunk}
|
2024-03-22 00:54:16 +03:00
|
|
|
tag="release/$version"
|
2022-09-27 01:37:56 +03:00
|
|
|
|
2024-03-22 00:54:16 +03:00
|
|
|
echo "Creating release in unison-local-ui."
|
|
|
|
gh release create "release/${version}" \
|
|
|
|
--repo unisonweb/unison-local-ui \
|
|
|
|
--target main \
|
|
|
|
--generate-notes --notes-start-tag "$prev_tag"
|
2022-09-27 01:37:56 +03:00
|
|
|
|
|
|
|
echo "Kicking off release workflow in unisonweb/unison"
|
2024-02-27 20:56:32 +03:00
|
|
|
# Make sure our origin/trunk ref is up to date, since that's usually what gets tagged.
|
|
|
|
git fetch origin trunk
|
2024-05-16 01:07:42 +03:00
|
|
|
git tag "${tag}" "${src}"
|
2022-09-27 01:37:56 +03:00
|
|
|
git push origin "${tag}"
|
2024-03-22 00:54:16 +03:00
|
|
|
gh workflow run release --repo unisonweb/unison \
|
2024-03-29 07:54:01 +03:00
|
|
|
--ref "${tag}" \
|
|
|
|
--field "version=${version}"
|
2022-09-27 01:37:56 +03:00
|
|
|
|
|
|
|
echo "Kicking off Homebrew update task"
|
|
|
|
gh workflow run release --repo unisonweb/homebrew-unison --field "version=${version}"
|
|
|
|
|
|
|
|
echo "Opening relevant workflows in browser"
|
|
|
|
gh workflow view release --web --repo unisonweb/homebrew-unison || true
|
|
|
|
gh workflow view release --web --repo unisonweb/unison || true
|
|
|
|
|
|
|
|
echo "Okay! All the work has been kicked off, it may take several hours to complete."
|
|
|
|
echo "Run '$0 --status' to see job status."
|