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

1"""ll-generate-schemas: Generate JSON Schema files for all LLEvent types.""" 

2 

3from __future__ import annotations 

4 

5import argparse 

6from pathlib import Path 

7 

8from little_loops.cli.output import configure_output, use_color_enabled 

9from little_loops.logger import Logger 

10 

11 

12def main_generate_schemas() -> int: 

13 """Entry point for ll-generate-schemas command. 

14 

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). 

17 

18 Returns: 

19 Exit code (0 = success, 1 = error) 

20 """ 

21 from little_loops.generate_schemas import generate_schemas 

22 

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 

31 

32Exit codes: 

33 0 - Schemas generated successfully 

34 1 - Error occurred 

35""", 

36 ) 

37 

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 ) 

45 

46 args = parser.parse_args() 

47 

48 configure_output() 

49 logger = Logger(use_color=use_color_enabled()) 

50 

51 output_dir = args.output or Path.cwd() / "docs" / "reference" / "schemas" 

52 

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