File tree Expand file tree Collapse file tree 2 files changed +59
-9
lines changed
Expand file tree Collapse file tree 2 files changed +59
-9
lines changed Original file line number Diff line number Diff line change @@ -158,20 +158,23 @@ jobs:
158158 id : changelog
159159 run : |
160160 VERSION="${{ steps.verify-merge.outputs.version }}"
161+ CHANGELOG_PATH="CHANGELOG.md"
162+ CHANGELOG_OUTPUT_TEMP_PATH="/tmp/changelog.txt"
163+ FALLBACK_MSG="📝 See [CHANGELOG.md](./CHANGELOG.md) for details."
161164
162- if [[ -f CHANGELOG.md ]]; then
163- CHANGELOG=$(awk "/## $VERSION/,/## [0-9]/" CHANGELOG.md | sed '1d;$d' | sed '/^$/d')
165+ CHANGELOG=""
166+ if [[ -f "$CHANGELOG_PATH" ]]; then
167+ CHANGELOG=$(.scripts/bash/extract-changelog "$VERSION" "$CHANGELOG_PATH")
168+ fi
164169
165- if [[ -z "$CHANGELOG" ]]; then
166- CHANGELOG="📝 See [CHANGELOG.md](./CHANGELOG.md) for details."
167- fi
170+ if [[ -n "$CHANGELOG" ]]; then
171+ echo "$CHANGELOG" > "$CHANGELOG_OUTPUT_TEMP_PATH"
168172 else
169- CHANGELOG="No changelog available."
173+ echo "No changelog available for version $VERSION." > "$CHANGELOG_OUTPUT_TEMP_PATH"
174+ echo "" >> "$CHANGELOG_OUTPUT_TEMP_PATH"
175+ echo "$FALLBACK_MSG" >> "$CHANGELOG_OUTPUT_TEMP_PATH"
170176 fi
171177
172- # Try persist multiple lines
173- echo "$CHANGELOG" > /tmp/changelog.txt
174-
175178 - name : Create GitHub Release
176179 if : steps.verify-merge.outputs.is_release == 'true'
177180 uses : softprops/action-gh-release@v1
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+
3+ if [[ $# -lt 1 ]]; then
4+ echo " 👹 Oops! Usage is extract-changelog <version> [changelog_file]" >&2
5+ exit 1
6+ fi
7+
8+ VERSION=" $1 "
9+ CHANGELOG_FILE=" ${2:- CHANGELOG.md} "
10+
11+ if [[ -z " $VERSION " ]]; then
12+ echo " 👹 Oops! Version is empty" >&2
13+ exit 1
14+ fi
15+
16+ if [[ ! -f " $CHANGELOG_FILE " ]]; then
17+ echo " 👹 Oops! Changelog file not found: $CHANGELOG_FILE " >&2
18+ exit 1
19+ fi
20+
21+ # NOTE: Extract content between "## <version>" and the next "## <version>" header
22+ FOUND=false
23+ CHANGELOG=" "
24+
25+ while IFS= read -r line; do
26+ if [[ " $line " == " ## $VERSION " ]]; then
27+ FOUND=true
28+ continue
29+ fi
30+
31+ if $FOUND ; then
32+ if [[ " $line " =~ ^# #\ [0-9] ]]; then
33+ break
34+ fi
35+ CHANGELOG+= " $line " $' \n '
36+ fi
37+ done < " $CHANGELOG_FILE "
38+
39+ CHANGELOG= " ${CHANGELOG% $' \n ' } "
40+
41+ if [[ -z " $CHANGELOG " ]]; then
42+ echo " No changelog content found for version $VERSION " >&2
43+ exit 1
44+ fi
45+
46+ # NOTE: Prevent GitHub mentioning user by replacing @username with `@username`
47+ echo " $CHANGELOG " | sed ' s/@\([a-zA-Z0-9][a-zA-Z0-9-]*\)/`@\1`/g'
You can’t perform that action at this time.
0 commit comments