import logging import os import re import subprocess from functools import lru_cache from http.server import HTTPServer, SimpleHTTPRequestHandler from importlib import metadata from pathlib import Path import mkdocs.utils import typer from jinja2 import Template logging.basicConfig(level=logging.INFO) mkdocs_name = "mkdocs.yml" en_docs_path = Path("") app = typer.Typer() @lru_cache def is_mkdocs_insiders() -> bool: version = metadata.version("mkdocs-material") return "insiders" in version @app.callback() def callback() -> None: if is_mkdocs_insiders(): os.environ["INSIDERS_FILE"] = "./mkdocs.insiders.yml" # For MacOS with insiders and Cairo os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = "/opt/homebrew/lib" index_sponsors_template = """ {% if sponsors %} {% for sponsor in sponsors.gold -%} {% endfor -%} {%- for sponsor in sponsors.silver -%} {% endfor %} {% endif %} """ def generate_readme_content() -> str: en_index = en_docs_path / "docs" / "index.md" content = en_index.read_text("utf-8") match_pre = re.search(r"\n\n", content) match_start = re.search(r"", content) match_end = re.search(r"", content) sponsors_data_path = en_docs_path / "data" / "sponsors.yml" sponsors = mkdocs.utils.yaml_load(sponsors_data_path.read_text(encoding="utf-8")) if not (match_start and match_end): raise RuntimeError("Couldn't auto-generate sponsors section") if not match_pre: raise RuntimeError("Couldn't find pre section (