]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🔨 Update docs preview script to show previous version and English version (#12856)
authorSebastián Ramírez <tiangolo@gmail.com>
Sat, 9 Nov 2024 20:13:48 +0000 (21:13 +0100)
committerGitHub <noreply@github.com>
Sat, 9 Nov 2024 20:13:48 +0000 (20:13 +0000)
scripts/deploy_docs_status.py

index 19dffbcb9ae9042e8f7447ecc0daadd774c69660..c652cdb6efe687310a092a557943fb05ddab1d9e 100644 (file)
@@ -2,7 +2,7 @@ import logging
 import re
 
 from github import Github
-from pydantic import SecretStr
+from pydantic import BaseModel, SecretStr
 from pydantic_settings import BaseSettings
 
 
@@ -15,7 +15,13 @@ class Settings(BaseSettings):
     is_done: bool = False
 
 
-def main():
+class LinkData(BaseModel):
+    previous_link: str
+    preview_link: str
+    en_link: str | None = None
+
+
+def main() -> None:
     logging.basicConfig(level=logging.INFO)
     settings = Settings()
 
@@ -60,7 +66,7 @@ def main():
     docs_files = [f for f in files if f.filename.startswith("docs/")]
 
     deploy_url = settings.deploy_url.rstrip("/")
-    lang_links: dict[str, list[str]] = {}
+    lang_links: dict[str, list[LinkData]] = {}
     for f in docs_files:
         match = re.match(r"docs/([^/]+)/docs/(.*)", f.filename)
         if not match:
@@ -71,15 +77,22 @@ def main():
             path = path.replace("index.md", "")
         else:
             path = path.replace(".md", "/")
+        en_path = path
         if lang == "en":
-            link = f"{deploy_url}/{path}"
+            use_path = en_path
         else:
-            link = f"{deploy_url}/{lang}/{path}"
+            use_path = f"{lang}/{path}"
+        link = LinkData(
+            previous_link=f"https://fastapi.tiangolo.com/{use_path}",
+            preview_link=f"{deploy_url}/{use_path}",
+        )
+        if lang != "en":
+            link.en_link = f"https://fastapi.tiangolo.com/{en_path}"
         lang_links.setdefault(lang, []).append(link)
 
-    links: list[str] = []
+    links: list[LinkData] = []
     en_links = lang_links.get("en", [])
-    en_links.sort()
+    en_links.sort(key=lambda x: x.preview_link)
     links.extend(en_links)
 
     langs = list(lang_links.keys())
@@ -88,14 +101,19 @@ def main():
         if lang == "en":
             continue
         current_lang_links = lang_links[lang]
-        current_lang_links.sort()
+        current_lang_links.sort(key=lambda x: x.preview_link)
         links.extend(current_lang_links)
 
     message = f"📝 Docs preview for commit {settings.commit_sha} at: {deploy_url}"
 
     if links:
         message += "\n\n### Modified Pages\n\n"
-        message += "\n".join([f"* {link}" for link in links])
+        for link in links:
+            message += f"* {link.preview_link}"
+            message += f" - ([before]({link.previous_link}))"
+            if link.en_link:
+                message += f" - ([English]({link.en_link}))"
+            message += "\n"
 
     print(message)
     use_pr.as_issue().create_comment(message)