Skip to content

Commit ef81958

Browse files
committed
Auto-generate release notes
1 parent b35617e commit ef81958

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

.github/workflows/docs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ jobs:
2222
run: uv python install
2323
- name: Install dependencies
2424
run: uv sync --all-extras --dev
25-
- name: Generate API reference docs
25+
- name: Auto-generate docs
2626
run: |
2727
uv run python scripts/mkdocs_generate_reference.py
28+
uv run python scripts/mkdocs_generate_release_notes.py
2829
- name: Deploy to GitHub Pages
2930
run: uv run mkdocs gh-deploy --force

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
# mkdocs
1+
# mkdocs build
22
site/
3+
4+
# auto-generated docs
35
docs/reference
6+
docs/release-notes.md
47

58
# uv/pyenv
69
.python-version
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env -S uv run
2+
from pathlib import Path
3+
4+
REPO_ROOT = Path(__file__).parent.parent
5+
CHANGELOG_MD = REPO_ROOT / "CHANGELOG.md"
6+
RELEASE_NOTES_MD = REPO_ROOT / "docs" / "release-notes.md"
7+
8+
9+
def get_releases() -> str:
10+
with CHANGELOG_MD.open() as f:
11+
changelog_md = f.read()
12+
13+
sections = changelog_md.split("\n## ")[1:]
14+
unreleased = sections.pop(0)
15+
# small sanity check
16+
if not unreleased.startswith("[Unreleased]"):
17+
raise ValueError("Unexpected CHANGELOG.md format, aborting!")
18+
19+
return "\n\n".join(f"## {section.strip()}" for section in sections)
20+
21+
22+
def main() -> None:
23+
releases = get_releases()
24+
25+
release_notes_md = f"# Release Notes\n\n{releases}\n"
26+
27+
with RELEASE_NOTES_MD.open("w") as f:
28+
f.write(release_notes_md)
29+
30+
31+
if __name__ == "__main__":
32+
main()

0 commit comments

Comments
 (0)