Files
soleprint/soleprint/atlas2/docgen/extractors/usage_main.py

33 lines
1.1 KiB
Python

""" python3 -m docgen.extractors usage --har session.har [-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 usage")
p.add_argument("--har", "-s", required=True, type=Path,
help="A HAR recording, as devtools/mitmproxy/Charles export.")
p.add_argument("--output", "-o", type=Path)
args = p.parse_args(argv)
from .usage import extract
try:
ir = extract(args.har)
except (OSError, json.JSONDecodeError, KeyError) as e:
print(f"Error: could not read {args.har}: {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")
ops = sum(1 for n in ir.nodes if n.kind == "operation")
print(f"{len(ir.nodes)} nodes ({eps} endpoints, {ops} graphql), "
f"{len(ir.edges)} sequence edges -> {args.output}")
else:
sys.stdout.write(text)
return 0