mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-23 20:29:06 -05:00
feat: draw site images from data, host them
scripts/sitediagrams.py writes the explainer, install flow, verification modes, MinUI card, pipeline and data layer diagrams as inline SVG from the registry, the platform files, the install manifests and the pipeline step list. A page asks for one with an image comment, which the decoration pass resolves. The two mermaid diagrams of the architecture page are replaced, so no page loads mermaid from unpkg. Platform logos and system icons are copied once by fetch_site_images.py with their source and owner recorded, and the build rewrites the remote links to the copies. validate_site refuses an image from another host. Three registry logos named a personal avatar instead of the project's (RomM, ROCKNIX, MiSTer FPGA) and MyMinUI's was a GitHub identicon, now dropped. One 1200x630 sharing card per section, a 404 page with search and the two entry pages, and a list of screenshots that need a real device.
This commit is contained in:
1 parent
f1c58820d1
commit
1b9ea86e1b
120 files changed
+1963
-176
No files matched your search
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Render the sharing cards (Open Graph images) to PNG, once.
|
||||
|
||||
Each card is an SVG written by ``sitediagrams.og_card_svg`` from the
|
||||
registry, rasterised by a headless Chromium through Playwright, then
|
||||
committed under ``docs_assets/og/``. The site build copies the PNG files and
|
||||
never runs this script, so it adds nothing to the build's dependencies.
|
||||
Run it again when a section's wording or the platform count changes.
|
||||
|
||||
python scripts/make_og_cards.py
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
sys.path.insert(0, str(ROOT / "scripts"))
|
||||
|
||||
from sitediagrams import OG_SECTIONS, og_card_svg # noqa: E402
|
||||
|
||||
OUT = ROOT / "docs_assets" / "og"
|
||||
LOGO = ROOT / ".github" / "assets" / "logo.png"
|
||||
|
||||
|
||||
def main() -> None:
|
||||
try:
|
||||
from playwright.sync_api import sync_playwright
|
||||
except ImportError as exc:
|
||||
raise SystemExit("Playwright with Chromium is needed: pip install playwright") from exc
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
logo = LOGO.read_bytes()
|
||||
with sync_playwright() as playwright:
|
||||
browser = playwright.chromium.launch()
|
||||
page = browser.new_page(viewport={"width": 1200, "height": 630})
|
||||
for section in OG_SECTIONS:
|
||||
page.set_content(
|
||||
'<html><body style="margin:0">' + og_card_svg(section, logo) + "</body></html>"
|
||||
)
|
||||
path = OUT / f"{section}.png"
|
||||
page.screenshot(path=str(path), clip={"x": 0, "y": 0, "width": 1200, "height": 630})
|
||||
print(path.relative_to(ROOT))
|
||||
browser.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user