|
|
@ -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) |
|
|
|