From d8d612e29ffa4a00ebeeaaae904454b20a5b2dd5 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Tue, 26 Nov 2019 15:27:56 +0100 Subject: [PATCH] Update Github release from changelog --- .github/workflows/github-release.yml | 29 ++++++++++++++++++++++++ scripts/package/changelog-for-version.py | 21 +++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 .github/workflows/github-release.yml create mode 100755 scripts/package/changelog-for-version.py diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml new file mode 100644 index 000000000..e1a249c24 --- /dev/null +++ b/.github/workflows/github-release.yml @@ -0,0 +1,29 @@ +name: Prepare release + +on: + push: + tags: + - 'release-*' + +jobs: + prepare-release: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-python@v1 + with: + python-version: 3.8 + - name: Prepare changelog + id: changelog + run: | + PICARD_VERSION=$(python -c "import picard; print(picard.__version__)") + echo "::set-output name=version::"$PICARD_VERSION + ./scripts/package/changelog-for-version.py $PICARD_VERSION > changes-$PICARD_VERSION.txt + - name: Update release + uses: softprops/action-gh-release@v1 + with: + name: MusicBrainz Picard ${{ steps.changelog.outputs.version }} + body_path: changes-${{ steps.changelog.outputs.version }}.txt + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/package/changelog-for-version.py b/scripts/package/changelog-for-version.py new file mode 100755 index 000000000..a2352901c --- /dev/null +++ b/scripts/package/changelog-for-version.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python + +import re +import sys + + +if len(sys.argv) == 1: + print("Call with changelog-for-version.py [version]", file=sys.stderr) + sys.exit(1) + +version = sys.argv[1] +re_changes = re.compile(r'^# Version ' + re.escape(version) + '.*?\n(.*?)# Version', + re.DOTALL | re.MULTILINE) + +with open('NEWS.md', 'r') as newsfile: + news = newsfile.read() + result = re_changes.search(news) + if not result: + print("No changelog found for version %s" % version, file=sys.stderr) + sys.exit(1) + print(result[1].strip())