27 lines
823 B
Python
27 lines
823 B
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
from pathlib import Path
|
|
|
|
from .generator import generate
|
|
|
|
|
|
def main(argv: list[str] | None = None) -> int:
|
|
parser = argparse.ArgumentParser(description="Generate a TSD and editable draw.io architecture diagram")
|
|
parser.add_argument("requirements", help="JSON requirements file or plain-text requirements file")
|
|
parser.add_argument("--output-dir", default="artifacts")
|
|
args = parser.parse_args(argv)
|
|
source = Path(args.requirements).read_text(encoding="utf-8")
|
|
try:
|
|
requirements = json.loads(source)
|
|
except json.JSONDecodeError:
|
|
requirements = source
|
|
result = generate(requirements, args.output_dir)
|
|
print(json.dumps(result, indent=2))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|