(argv: list[str] | None = None)
| 200 | |
| 201 | |
| 202 | def main(argv: list[str] | None = None) -> int: |
| 203 | parser = argparse.ArgumentParser(description=__doc__) |
| 204 | parser.add_argument("--left", required=True, type=Path, help="Path to first summary JSON.") |
| 205 | parser.add_argument("--right", required=True, type=Path, help="Path to second summary JSON.") |
| 206 | parser.add_argument("--left-label", default="left", help="Label for the first agent.") |
| 207 | parser.add_argument("--right-label", default="right", help="Label for the second agent.") |
| 208 | parser.add_argument( |
| 209 | "--out", |
| 210 | type=Path, |
| 211 | default=None, |
| 212 | help="Optional path to write the markdown report. Disagreement lists are written next to it.", |
| 213 | ) |
| 214 | args = parser.parse_args(argv) |
| 215 | |
| 216 | left = load_summary(args.left, args.left_label) |
| 217 | right = load_summary(args.right, args.right_label) |
| 218 | |
| 219 | print(render_text(left, right)) |
| 220 | |
| 221 | if args.out is not None: |
| 222 | args.out.parent.mkdir(parents=True, exist_ok=True) |
| 223 | args.out.write_text(render_markdown(left, right), encoding="utf-8") |
| 224 | write_disagreement_lists(args.out.parent, left, right) |
| 225 | print(f"\nWrote {args.out}") |
| 226 | return 0 |
| 227 | |
| 228 | |
| 229 | if __name__ == "__main__": |
no test coverage detected