diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c04d27b1..b1e91642 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,13 @@ jobs: id: body run: | FILENAME=RELEASE.md - extras/scripts/get-release-body.sh ${{ steps.init.outputs.tag }} CHANGELOG.md | tee $FILENAME + tee $FILENAME <> $GITHUB_OUTPUT - name: Amalgamate ArduinoJson.h id: amalgamate_h diff --git a/extras/scripts/extract_changes.awk b/extras/scripts/extract_changes.awk new file mode 100755 index 00000000..d96d459d --- /dev/null +++ b/extras/scripts/extract_changes.awk @@ -0,0 +1,29 @@ +#!/usr/bin/awk -f + +# Start echoing after the first list item +/\* / { + STARTED=1 + EMPTY_LINE=0 +} + +# Remember if we have seen an empty line +/^[[:space:]]*$/ { + EMPTY_LINE=1 +} + +# Exit when seeing a new version number +/^v[[:digit:]]/ { + if (STARTED) exit +} + +# Print if the line is not empty +# and restore the empty line we have skipped +!/^[[:space:]]*$/ { + if (STARTED) { + if (EMPTY_LINE) { + print "" + EMPTY_LINE=0 + } + print + } +} diff --git a/extras/scripts/get-release-body.sh b/extras/scripts/get-release-body.sh deleted file mode 100755 index 7c842c23..00000000 --- a/extras/scripts/get-release-body.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -set -eu - -TAG="$1" -CHANGELOG="$2" - -cat << END -## Changes - -$(awk '/\* /{ FOUND=1 } /^[[:space:]]*$/ { if(FOUND) exit } { if(FOUND) print }' "$CHANGELOG") - -[View version history](https://github.com/bblanchon/ArduinoJson/blob/$TAG/CHANGELOG.md) -END diff --git a/extras/scripts/get-release-page.sh b/extras/scripts/get-release-page.sh index 9eb53e1f..10fa0877 100755 --- a/extras/scripts/get-release-page.sh +++ b/extras/scripts/get-release-page.sh @@ -14,5 +14,5 @@ date: '$(date +'%Y-%m-%d')' $(extras/scripts/wandbox/publish.sh "$ARDUINOJSON_H") --- -$(awk '/\* /{ FOUND=1; print; next } { if (FOUND) exit}' "$CHANGELOG") +$(extras/scripts/extract_changes.awk "$CHANGELOG") END