""" Programmatic MkDocs build script for OmniRead. This script builds (or serves) the documentation by invoking MkDocs *as a Python library*, not via shell commands. Requirements: - mkdocs - mkdocs-material - mkdocstrings[python] Usage: python generate_docs.py python generate_docs.py --serve """ import sys from pathlib import Path from mkdocs.commands import build as mkdocs_build from mkdocs.commands import serve as mkdocs_serve from mkdocs.config import load_config PROJECT_ROOT = Path(__file__).resolve().parent MKDOCS_YML = PROJECT_ROOT / "mkdocs.yml" def main() -> None: if not MKDOCS_YML.exists(): raise FileNotFoundError("mkdocs.yml not found at project root") # Load MkDocs configuration programmatically config = load_config(str(MKDOCS_YML)) # Decide mode if "--serve" in sys.argv: # Live-reload development server mkdocs_serve.serve(config) else: # Static site build mkdocs_build.build(config) if __name__ == "__main__": main()