refactored _logic to _utils and test cases fixes. site name is not mandatory now

This commit is contained in:
2026-01-21 18:27:40 +05:30
parent 8e97e571b7
commit 711bef1dce
7 changed files with 68 additions and 19 deletions

View File

@@ -2,8 +2,9 @@ import click
from pathlib import Path
from typing import Sequence, Optional
from docforge.loaders import GriffeLoader
from docforge.cli.mkdocs import logic as mkdocs_logic
from docforge.cli.mcp import logic as mcp_logic
from docforge.cli import mkdocs_utils
from docforge.cli import mcp_utils
@click.group()
def cli() -> None:
@@ -13,6 +14,7 @@ def cli() -> None:
"""
pass
@cli.command()
@click.option("--mcp", is_flag=True, help="Build MCP resources")
@click.option("--mkdocs", is_flag=True, help="Build MkDocs site")
@@ -21,7 +23,8 @@ def cli() -> None:
# MkDocs specific
@click.option("--site-name", help="MkDocs site name")
@click.option("--docs-dir", type=click.Path(path_type=Path), default=Path("docs"), help="Directory for MD sources")
@click.option("--nav", "nav_file", type=click.Path(path_type=Path), default=Path("docforge.nav.yml"), help="Nav spec path")
@click.option("--nav", "nav_file", type=click.Path(path_type=Path), default=Path("docforge.nav.yml"),
help="Nav spec path")
@click.option("--template", type=click.Path(path_type=Path), help="MkDocs template path")
@click.option("--mkdocs-yml", type=click.Path(path_type=Path), default=Path("mkdocs.yml"), help="Output config path")
# MCP specific
@@ -49,25 +52,26 @@ def build(
raise click.UsageError("--module is required for MkDocs build")
if not site_name:
site_name = module
click.echo(f"Generating MkDocs sources in {docs_dir}...")
mkdocs_logic.generate_sources(module, project_name, docs_dir)
mkdocs_utils.generate_sources(module, project_name, docs_dir)
click.echo(f"Generating MkDocs config {mkdocs_yml}...")
mkdocs_logic.generate_config(docs_dir, nav_file, template, mkdocs_yml, site_name)
mkdocs_utils.generate_config(docs_dir, nav_file, template, mkdocs_yml, site_name)
click.echo("Running MkDocs build...")
mkdocs_logic.build(mkdocs_yml)
mkdocs_utils.build(mkdocs_yml)
click.echo("MkDocs build completed.")
if mcp:
if not module:
raise click.UsageError("--module is required for MCP build")
click.echo(f"Generating MCP resources in {out_dir}...")
mcp_logic.generate_resources(module, project_name, out_dir)
mcp_utils.generate_resources(module, project_name, out_dir)
click.echo("MCP build completed.")
@cli.command()
@click.option("--mcp", is_flag=True, help="Serve MCP documentation")
@click.option("--mkdocs", is_flag=True, help="Serve MkDocs site")
@@ -88,9 +92,10 @@ def serve(
raise click.UsageError("Must specify either --mcp or --mkdocs")
if mkdocs:
mkdocs_logic.serve(mkdocs_yml)
mkdocs_utils.serve(mkdocs_yml)
elif mcp:
mcp_logic.serve(out_dir)
mcp_utils.serve(out_dir)
@cli.command()
@click.option(
@@ -120,6 +125,7 @@ def tree(
for obj in module.get_all_objects():
_print_object(obj, indent="")
def _print_object(obj, indent: str) -> None:
"""
Recursive helper to print doc objects and their members to the console.