78 lines
1.4 KiB
Python
78 lines
1.4 KiB
Python
from typing import Sequence
|
|
from pathlib import Path
|
|
|
|
import click
|
|
|
|
|
|
@click.group()
|
|
def cli() -> None:
|
|
"""doc-forge command-line interface."""
|
|
|
|
|
|
@cli.command()
|
|
@click.option(
|
|
"--modules",
|
|
multiple=True,
|
|
help="Python module import paths to introspect",
|
|
)
|
|
@click.option(
|
|
"--project-name",
|
|
help="Project name (defaults to first module)",
|
|
)
|
|
def tree(
|
|
modules: Sequence[str],
|
|
project_name: str | None,
|
|
) -> None:
|
|
"""Show introspection tree."""
|
|
|
|
|
|
@cli.command()
|
|
@click.option(
|
|
"--modules",
|
|
multiple=True,
|
|
help="Python module import paths to document",
|
|
)
|
|
@click.option(
|
|
"--project-name",
|
|
help="Project name (defaults to first module)",
|
|
)
|
|
@click.option(
|
|
"--docs-dir",
|
|
type=click.Path(path_type=Path),
|
|
default=Path("docs"),
|
|
)
|
|
def generate(
|
|
modules: Sequence[str],
|
|
project_name: str | None,
|
|
docs_dir: Path,
|
|
) -> None:
|
|
"""Generate documentation source files using MkDocs renderer."""
|
|
|
|
|
|
@cli.command()
|
|
@click.option(
|
|
"--mkdocs-yml",
|
|
type=click.Path(path_type=Path),
|
|
default=Path("mkdocs.yml"),
|
|
)
|
|
def build(
|
|
mkdocs_yml: Path,
|
|
) -> None:
|
|
"""Build documentation using MkDocs."""
|
|
|
|
|
|
@cli.command()
|
|
@click.option(
|
|
"--mkdocs-yml",
|
|
type=click.Path(path_type=Path),
|
|
default=Path("mkdocs.yml"),
|
|
)
|
|
def serve(
|
|
mkdocs_yml: Path,
|
|
) -> None:
|
|
"""Serve documentation using MkDocs."""
|
|
|
|
|
|
def main() -> None:
|
|
"""CLI entry point."""
|