From 9ba85571fb6741b4c371bfc74be5dcbd51feaa30 Mon Sep 17 00:00:00 2001 From: Kaustubh Maske Patil <37668193+nikochiko@users.noreply.github.com> Date: Mon, 16 Sep 2024 17:53:28 +0530 Subject: [PATCH] Add script to generate references for documentation --- .fernignore | 1 + scripts/gen_ref_pages.py | 46 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 scripts/gen_ref_pages.py diff --git a/.fernignore b/.fernignore index a42fc27..06f7da0 100644 --- a/.fernignore +++ b/.fernignore @@ -4,3 +4,4 @@ src/gooey/core/http_client.py src/gooey/core/pydantic_utilities.py docs/ mkdocs.yml +scripts/ diff --git a/scripts/gen_ref_pages.py b/scripts/gen_ref_pages.py new file mode 100644 index 0000000..5281eb0 --- /dev/null +++ b/scripts/gen_ref_pages.py @@ -0,0 +1,46 @@ +"""Generate the code reference pages.""" + +import importlib +from pathlib import Path + +import mkdocs_gen_files + + +nav = mkdocs_gen_files.Nav() +mod_symbol = '' + +root = Path(__file__).parent.parent +src = root / "src" + +for path in sorted(src.rglob("*.py")): + module_path = path.relative_to(src).with_suffix("") + doc_path = path.relative_to(src).with_suffix(".md") + full_doc_path = Path("reference", doc_path) + + parts = tuple(module_path.parts) + + if parts[-1] == "__init__": + parts = parts[:-1] + doc_path = doc_path.with_name("index.md") + full_doc_path = full_doc_path.with_name("index.md") + elif parts[-1] == "__main__": + continue + + nav_parts = [f"{mod_symbol} {part}" for part in parts] + nav[tuple(nav_parts)] = doc_path.as_posix() + + with mkdocs_gen_files.open(full_doc_path, "w") as fd: + identifier = ".".join(parts) + print(f"---\ntitle: {identifier}\n---\n\n::: {identifier}", file=fd) + + if identifier.endswith("gooey"): + print(" handler: python", file=fd) + print(" options:", file=fd) + print(" members:", file=fd) + print(" - Gooey", file=fd) + print(" - AsyncGooey", file=fd) + + mkdocs_gen_files.set_edit_path(full_doc_path, path.relative_to(root)) + + with mkdocs_gen_files.open("reference/SUMMARY.md", "w") as nav_file: + nav_file.writelines(nav.build_literate_nav())