Files
soleprint/soleprint/atlas2/docgen/extractors/openapi_main.py
2026-09-12 06:42:49 -03:00

30 lines
962 B
Python

""" python3 -m docgen.extractors.openapi --spec petstore.yaml [-o ir.json]"""
import argparse
import json
import sys
from pathlib import Path
def main(argv=None):
p = argparse.ArgumentParser(prog="python3 -m docgen.extractors.openapi")
p.add_argument("--spec", "-s", required=True, type=Path)
p.add_argument("--output", "-o", type=Path)
args = p.parse_args(argv)
from .openapi import extract
try:
ir = extract(args.spec)
except (OSError, ImportError, ValueError) as e:
print(f"Error: {e}", file=sys.stderr)
return 1
text = json.dumps(ir.to_dict(), indent=2) + "\n"
if args.output:
args.output.parent.mkdir(parents=True, exist_ok=True)
args.output.write_text(text)
eps = sum(1 for n in ir.nodes if n.kind == "endpoint")
print(f"{len(ir.nodes)} nodes ({eps} endpoints), {len(ir.edges)} edges -> {args.output}")
else:
sys.stdout.write(text)
return 0