From ded45716da7cc500fb3d8ebe1a55ea5036311490 Mon Sep 17 00:00:00 2001 From: Kazuya Takei Date: Sat, 24 Feb 2024 01:13:22 +0900 Subject: [PATCH] doc: Ready to geneate changelog --- CHANGES.rst | 14 ++++++++++++++ pyproject.toml | 1 + tools/release-commit.py | 39 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 CHANGES.rst diff --git a/CHANGES.rst b/CHANGES.rst new file mode 100644 index 0000000..8221e31 --- /dev/null +++ b/CHANGES.rst @@ -0,0 +1,14 @@ + +v0.0.3 +====== + +:date: 2024-02-24 (JST) + +Features +-------- + +Bug fixes +--------- + +Miscellaneous +------------- diff --git a/pyproject.toml b/pyproject.toml index c8f28ba..1333bec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,6 +49,7 @@ testpaths = ["tests"] [tool.rye] managed = true dev-dependencies = [ + "jinja2~=3.1.0", "pytest~=8.0.1", "sphinx~=7.2.0", "sphinx-autobuild~=2024.2.4", diff --git a/tools/release-commit.py b/tools/release-commit.py index 6f8b38e..592d876 100755 --- a/tools/release-commit.py +++ b/tools/release-commit.py @@ -1,10 +1,14 @@ #!/usr/bin/env python """Batch script to generate 'release' commit.""" import argparse +import shutil import subprocess +from datetime import date from pathlib import Path +from textwrap import dedent import tomllib +from jinja2 import Template root = Path(__file__).parent.parent parser = argparse.ArgumentParser() @@ -38,6 +42,39 @@ def replace_version(target, current_version: str, new_version: str): src.write_text("\n".join(lines)) +def update_changes(current_version: str, new_version: str): + """Generate changelog for new version. + + Currently, this works only generate template. + """ + CHANGELOG_TEMPLATE = Template( + dedent( + """ + v{{version}} + ={{'=' * version|length}} + + :date: {{now.strftime('%Y-%m-%d')}} (JST) + + Features + -------- + + Bug fixes + --------- + + Miscellaneous + ------------- + + """ + ) + ) + now = date.today() + target = root / "CHANGES.rst" + move_to = root / "doc" / "changelogs" / f"v{current_version}.rst" + move_to.parent.mkdir(parents=True, exist_ok=True) + shutil.copy(target, move_to) + target.write_text(CHANGELOG_TEMPLATE.render(version=new_version, now=now)) + + def main(args: argparse.Namespace): """Handle multi functions.""" pyproject = tomllib.loads((root / "pyproject.toml").read_text()) @@ -47,7 +84,7 @@ def main(args: argparse.Namespace): print(f"Next version: v{new_version}") for target in pyproject["tool"]["local"]["bumpversion"]["files"]: replace_version(target, current_version, new_version) - pass + update_changes(current_version, new_version) if __name__ == "__main__":