Files
crucible-agent-build-phase-2/src/application_landing_zone_agent/cli.py

24 lines
1.2 KiB
Python

import argparse, json, sys
from pathlib import Path
from .agent import LandingZoneAgent, ValidationError, load_config
def main(argv=None) -> int:
p = argparse.ArgumentParser(description="Generate a TSD and draw.io architecture diagram")
p.add_argument("--input", required=True, help="requirements JSON")
p.add_argument("--output-dir", required=True)
p.add_argument("--config", default="config/default.json")
args = p.parse_args(argv)
try:
data = json.loads(Path(args.input).read_text())
result = LandingZoneAgent(load_config(args.config)).generate(data)
out = Path(args.output_dir); out.mkdir(parents=True, exist_ok=True)
result_files = {"tsd.md": result.tsd_markdown, "architecture.drawio": result.drawio_xml, "validation.json": json.dumps(result.validation.__dict__, indent=2) + "\n"}
for name, content in result_files.items(): (out / name).write_text(content)
return 0
except ValidationError as exc:
print(f"validation error: {exc}", file=sys.stderr); return 2
except (OSError, json.JSONDecodeError, RuntimeError) as exc:
print(f"generation error: {exc}", file=sys.stderr); return 1
if __name__ == "__main__": sys.exit(main())