diff --git a/generate_docs.py b/generate_docs.py new file mode 100644 index 0000000..bb93ddd --- /dev/null +++ b/generate_docs.py @@ -0,0 +1,46 @@ +""" +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()