]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🔨 Add pre-commit hook to ensure latest release header has date (#15293)
authorMotov Yurii <109919500+YuriiMotov@users.noreply.github.com>
Fri, 3 Apr 2026 12:06:36 +0000 (14:06 +0200)
committerGitHub <noreply@github.com>
Fri, 3 Apr 2026 12:06:36 +0000 (14:06 +0200)
.pre-commit-config.yaml
scripts/add_latest_release_date.py [new file with mode: 0644]

index 21c8bea6cd455d34e2fde1cb838086606a518fdf..4eae7a64dfdd7c2ad17b4d4dd842eab6f75e0ded 100644 (file)
@@ -78,3 +78,10 @@ repos:
         name: fix translations
         entry: uv run ./scripts/translation_fixer.py fix-pages
         files: ^docs/(?!en/).*/docs/.*\.md$
+
+      - id: add-release-date
+        language: unsupported
+        name: add date to latest release header
+        entry: uv run python scripts/add_latest_release_date.py
+        files: ^docs/en/docs/release-notes\.md$
+        pass_filenames: false
diff --git a/scripts/add_latest_release_date.py b/scripts/add_latest_release_date.py
new file mode 100644 (file)
index 0000000..f20b727
--- /dev/null
@@ -0,0 +1,40 @@
+"""Check release-notes.md and add today's date to the latest release header if missing."""
+
+import re
+import sys
+from datetime import date
+
+RELEASE_NOTES_FILE = "docs/en/docs/release-notes.md"
+RELEASE_HEADER_PATTERN = re.compile(r"^## (\d+\.\d+\.\d+)\s*(\(.*\))?\s*$")
+
+
+def main() -> None:
+    with open(RELEASE_NOTES_FILE) as f:
+        lines = f.readlines()
+
+    for i, line in enumerate(lines):
+        match = RELEASE_HEADER_PATTERN.match(line)
+        if not match:
+            continue
+
+        version = match.group(1)
+        date_part = match.group(2)
+
+        if date_part:
+            print(f"Latest release {version} already has a date: {date_part}")
+            sys.exit(0)
+
+        today = date.today().isoformat()
+        lines[i] = f"## {version} ({today})\n"
+        print(f"Added date: {version} ({today})")
+
+        with open(RELEASE_NOTES_FILE, "w") as f:
+            f.writelines(lines)
+        sys.exit(0)
+
+    print("No release header found")
+    sys.exit(1)
+
+
+if __name__ == "__main__":
+    main()