mirror of
https://seed.radicle.dev/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5.git
synced 2026-10-18 19:10:30 +08:00
Generate the links to the commits, on seed.radicle.dev, so that reviewers of the changelog can easily navigate to the commits.
89 lines
1.9 KiB
Bash
Executable File
89 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
render_commit_footnotes() {
|
|
# shellcheck disable=SC2016
|
|
git log --pretty=format:'[`%h`]: https://radicle.network/nodes/seed.radicle.dev/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/commits/%H' "$1"
|
|
echo
|
|
}
|
|
|
|
# Version from which to generate the changelog.
|
|
from=""
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--from-version)
|
|
if [ -z "$2" ]; then
|
|
echo "error: '--from-version' requires a version number" >&2
|
|
exit 1
|
|
fi
|
|
shift
|
|
from=$(echo "$1" | sed 's/^releases\///')
|
|
break
|
|
;;
|
|
*)
|
|
echo "error: unknown argument '$1'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Current/latest tag.
|
|
version="$(build/version)"
|
|
current="releases/${version}"
|
|
|
|
if ! git rev-parse --verify "$current^{tag}" >/dev/null 2>&1; then
|
|
echo "error: tag '$current' not found" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$from" ]; then
|
|
previous="$(git describe --abbrev=0 HEAD^)"
|
|
else
|
|
previous="releases/$from"
|
|
fi
|
|
|
|
if ! git rev-parse --verify "$previous^{tag}" >/dev/null 2>&1; then
|
|
echo "error: '$from' is not a valid version, tag '$previous' not found" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "# 👾 Radicle $version"
|
|
echo
|
|
echo "Radicle $version ($(git rev-parse --short HEAD)) is released."
|
|
echo
|
|
echo "## Installation"
|
|
echo
|
|
echo '```'
|
|
echo "curl -sSf https://radicle.dev/install | sh -s -- --no-modify-path --version=$version"
|
|
echo '```'
|
|
echo
|
|
echo "## Notes"
|
|
echo
|
|
echo "* This update is recommended for everyone. No manual intervention is required."
|
|
echo
|
|
echo "## Changelog"
|
|
|
|
range="${previous}..${current}"
|
|
ncommits=$(git rev-list --count "$range")
|
|
ncontribs=$(git log "$range" --format='%ae' | sort -u | wc -l)
|
|
|
|
echo
|
|
echo "This release contains $ncommits commit(s) by $ncontribs contributor(s)."
|
|
echo
|
|
|
|
# shellcheck disable=SC2016
|
|
git log --pretty=format:'* [`%h`] **%s** *<%ae>*' "$range"
|
|
echo
|
|
echo
|
|
|
|
render_commit_footnotes "$range"
|
|
echo
|
|
|
|
echo "## Checksums"
|
|
echo
|
|
|
|
echo '```'
|
|
build/checksums
|
|
echo '```'
|