Coverage for little_loops / cli / schemas.py: 35%
23 statements
« prev ^ index » next coverage.py v7.12.0, created at 2026-06-29 00:55 -0500
« prev ^ index » next coverage.py v7.12.0, created at 2026-06-29 00:55 -0500
1"""ll-generate-schemas: Generate JSON Schema files for all LLEvent types."""
3from __future__ import annotations
5import argparse
6import sys
7from pathlib import Path
9from little_loops.cli.output import configure_output, use_color_enabled
10from little_loops.logger import Logger
11from little_loops.session_store import DEFAULT_DB_PATH, cli_event_context
14def main_generate_schemas() -> int:
15 """Entry point for ll-generate-schemas command.
17 Generate JSON Schema (draft-07) files for all 22 LLEvent types and write them
18 to docs/reference/schemas/ (or a custom output directory).
20 Returns:
21 Exit code (0 = success, 1 = error)
22 """
23 with cli_event_context(DEFAULT_DB_PATH, "ll-generate-schemas", sys.argv[1:]):
24 from little_loops.generate_schemas import generate_schemas
26 parser = argparse.ArgumentParser(
27 prog="ll-generate-schemas",
28 description="Generate JSON Schema files for all LLEvent types",
29 formatter_class=argparse.RawDescriptionHelpFormatter,
30 epilog="""
31Examples:
32 %(prog)s # Write to docs/reference/schemas/
33 %(prog)s --output path/to/schemas/ # Custom output directory
35Exit codes:
36 0 - Schemas generated successfully
37 1 - Error occurred
38""",
39 )
41 parser.add_argument(
42 "-o",
43 "--output",
44 type=Path,
45 default=None,
46 help="Output directory (default: docs/reference/schemas/ relative to cwd)",
47 )
49 args = parser.parse_args()
51 configure_output()
52 logger = Logger(use_color=use_color_enabled())
54 output_dir = args.output or Path.cwd() / "docs" / "reference" / "schemas"
56 try:
57 paths = generate_schemas(output_dir)
58 logger.success(f"Generated {len(paths)} schema(s) in {output_dir}/")
59 return 0
60 except Exception as exc:
61 logger.error(str(exc))
62 return 1