MCPcopy Create free account
hub / github.com/PostHog/duckgres / main

Function main

scripts/test_impact_plan.py:540–585  ·  view source on GitHub ↗
(argv: list[str] | None = None)

Source from the content-addressed store, hash-verified

538
539
540def main(argv: list[str] | None = None) -> int:
541 parser = argparse.ArgumentParser(description=__doc__)
542 parser.add_argument("--repo", default=".", help="repository path")
543 parser.add_argument("--base", default="origin/main", help="base ref")
544 parser.add_argument("--head", default="HEAD", help="head ref")
545 parser.add_argument(
546 "--github-pr-files-json",
547 help="analyze GitHub pull request files API JSON instead of running git diff",
548 )
549 parser.add_argument(
550 "--expected-file-count",
551 type=int,
552 help="warn when GitHub reports more changed files than were provided",
553 )
554 parser.add_argument("--markdown-output", help="write Markdown report here")
555 parser.add_argument("--json-output", help="write JSON report here")
556 parser.add_argument(
557 "--json",
558 action="store_true",
559 help="print JSON instead of Markdown to stdout",
560 )
561 args = parser.parse_args(argv)
562
563 if args.github_pr_files_json:
564 with Path(args.github_pr_files_json).open() as handle:
565 plan = analyze_github_pr_files(
566 json.load(handle),
567 expected_file_count=args.expected_file_count,
568 )
569 else:
570 repo = Path(args.repo)
571 diff_range = f"{args.base}...{args.head}"
572 name_status = run_git(repo, ["diff", "--name-status", diff_range])
573 patch = run_git(repo, ["diff", "--unified=0", diff_range])
574 plan = analyze_diff(name_status, patch)
575
576 markdown = render_markdown(plan)
577 payload = json.dumps(asdict(plan), indent=2, sort_keys=True)
578 write_text(args.markdown_output, markdown)
579 write_text(args.json_output, payload + "\n")
580
581 if args.json:
582 sys.stdout.write(payload + "\n")
583 else:
584 sys.stdout.write(markdown)
585 return 0
586
587
588if __name__ == "__main__":

Callers 1

Calls 6

analyze_github_pr_filesFunction · 0.85
run_gitFunction · 0.85
analyze_diffFunction · 0.85
render_markdownFunction · 0.85
write_textFunction · 0.85
loadMethod · 0.80

Tested by

no test coverage detected