diff --git a/.github/generate_release_notes.py b/.github/generate_release_notes.py new file mode 100644 index 0000000..5e88471 --- /dev/null +++ b/.github/generate_release_notes.py @@ -0,0 +1,32 @@ +import re + +def main() -> None: + """Generate release notes for the latest GitHub release.""" + + with open("CHANGELOG.md", encoding="utf-8") as file: + changelog = file.read() + + first_section = re.search(r"^### ", changelog, re.MULTILINE) + if first_section is None: + raise RuntimeError("Could not find the first changelog section.") + + next_release = re.search(r"^## ", changelog[first_section.start():], re.MULTILINE) + + if next_release is None: + raise RuntimeError("Could not find the next release heading.") + + latest_changes = changelog[first_section.start() : first_section.start() + next_release.start()].strip() + + release_notes = f"""A fast code formatter for GDScript in Godot 4. + +## Changelog + +{latest_changes} + +Learn more about the formatter in the [GDScript Formatter documentation](https://www.gdquest.com/library/gdscript_formatter/) +""" + + print(release_notes) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2aefeda..d6db84b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -122,17 +122,12 @@ jobs: path: artifacts merge-multiple: true + - name: Generate release notes + run: python .github/generate_release_notes.py > release-notes.md + - name: Create Release run: | - gh release create "${{ github.ref_name }}" \ - --verify-tag \ - --draft \ - --title "GDScript formatter ${{ github.ref_name }}" \ - --notes "A fast code formatter for GDScript in Godot 4. - - You can learn how to install, use, configure, and integrate the formatter into your workflow on this page: - - https://www.gdquest.com/library/gdscript_formatter/" + gh release create "${{ github.ref_name }}" --verify-tag --draft --title "GDScript formatter ${{ github.ref_name }}" --notes-file release-notes.md gh release upload "${{ github.ref_name }}" artifacts/*.zip gh release edit "${{ github.ref_name }}" --draft=false