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