import argparse import subprocess import tomllib from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] def project_version(): """Return the documentation version declared by the project.""" project = tomllib.loads( (PROJECT_ROOT / "pyproject.toml").read_text(encoding="utf-8") )["project"] return project["version"] def documentation_command(dev=False): """Return the Mike or MkDocs command for the requested mode.""" if dev: return ["mkdocs", "serve"] return [ "mike", "deploy", "--update-aliases", project_version(), "latest", ] def main(argv=None): parser = argparse.ArgumentParser(description="Build or preview documentation.") parser.add_argument( "-dev", "--dev", action="store_true", help="preview the current documentation with live reload", ) args = parser.parse_args(argv) subprocess.run( documentation_command(args.dev), cwd=PROJECT_ROOT, check=True, ) if __name__ == "__main__": main()