Coverage for little_loops / cli / schemas.py: 25%

16 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2026-04-11 23: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 

8 

9def main_generate_schemas() -> int: 

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

11 

12 Generate JSON Schema (draft-07) files for all 19 LLEvent types and write them 

13 to docs/reference/schemas/ (or a custom output directory). 

14 

15 Returns: 

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

17 """ 

18 from little_loops.generate_schemas import generate_schemas 

19 

20 parser = argparse.ArgumentParser( 

21 prog="ll-generate-schemas", 

22 description="Generate JSON Schema files for all LLEvent types", 

23 formatter_class=argparse.RawDescriptionHelpFormatter, 

24 epilog=""" 

25Examples: 

26 %(prog)s # Write to docs/reference/schemas/ 

27 %(prog)s --output path/to/schemas/ # Custom output directory 

28 

29Exit codes: 

30 0 - Schemas generated successfully 

31 1 - Error occurred 

32""", 

33 ) 

34 

35 parser.add_argument( 

36 "-o", 

37 "--output", 

38 type=Path, 

39 default=None, 

40 help="Output directory (default: docs/reference/schemas/ relative to cwd)", 

41 ) 

42 

43 args = parser.parse_args() 

44 

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

46 

47 try: 

48 paths = generate_schemas(output_dir) 

49 print(f"Generated {len(paths)} schema(s) in {output_dir}/") 

50 return 0 

51 except Exception as exc: 

52 print(f"Error: {exc}") 

53 return 1