Skip to content

Commit c02c16d

Browse files
authored
add script to draft release notes (#327)
* add script to draft release notes * fix shellcheck warns
1 parent fe69187 commit c02c16d

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ help:
155155
@grep -E '^[a-zA-Z_-]+:.*$$' $(MAKEFILE_LIST) | sort
156156

157157
## Targets intended to be run in preparation for a new release
158+
draft-release-notes:
159+
${MAKEFILE_PATH}/scripts/draft-release-notes
160+
158161
create-local-release-tag-major:
159162
${MAKEFILE_PATH}/scripts/create-local-tag-for-release -m
160163

scripts/draft-release-notes

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
GIT_REPO_ROOT=$(git rev-parse --show-toplevel)
5+
BUILD_DIR="${GIT_REPO_ROOT}/build"
6+
7+
RELEASE_NOTES="${BUILD_DIR}/release-notes.md"
8+
touch "${RELEASE_NOTES}"
9+
10+
>&2 git fetch --all --tags
11+
12+
if git describe HEAD --tags | grep -Eq "^v[0-9]+(\.[0-9]+)*(-[a-z0-9]+)?$"; then
13+
LAST_RELEASE_HASH=$(git rev-list --tags --max-count=1 --skip=1 --no-walk)
14+
else
15+
TAG=$(git describe HEAD --tags | grep -Eo "^v[0-9]+(\.[0-9]+)*")
16+
LAST_RELEASE_HASH=$(git rev-list -1 $TAG)
17+
fi
18+
19+
echo "## Changes" | tee -a "${RELEASE_NOTES}"
20+
for change in $(git rev-list $LAST_RELEASE_HASH..HEAD); do
21+
one_line_msg=$(git --no-pager log --pretty='%s (thanks to %an)' "${change}" -n1 | sed 's/^\[.*\]//' | xargs)
22+
echo " - ${one_line_msg}" | tee -a "${RELEASE_NOTES}"
23+
done
24+
25+
>&2 echo -e "\n\nRelease notes file: ${RELEASE_NOTES}"

0 commit comments

Comments
 (0)