diff options
| author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2026-04-16 09:58:55 +0900 |
|---|---|---|
| committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2026-04-16 10:20:19 +0900 |
| commit | 1daa0eae991de017d94e1e15334612e67a47e9c9 (patch) | |
| tree | 01a59b993975b79c48ef6b6e7bb4d3303f636680 | |
| parent | 8177af52da8d6978cfd22ea20e99a4262acd2b28 (diff) | |
Fetch PR data once to avoid duplicate API calls
Extract the PR API call into the review method and pass it to
review_non_fork_branch and review_redmine_links so the same endpoint
is not fetched twice per run.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
| -rwxr-xr-x | tool/auto_review_pr.rb | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/tool/auto_review_pr.rb b/tool/auto_review_pr.rb index e281cec00e..d659730f56 100755 --- a/tool/auto_review_pr.rb +++ b/tool/auto_review_pr.rb @@ -60,9 +60,10 @@ class AutoReviewPR def review(pr_number) existing_comments = fetch_existing_comments(pr_number) - review_non_fork_branch(pr_number, existing_comments) + pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}") + review_non_fork_branch(pr_number, pr, existing_comments) review_upstream_repos(pr_number, existing_comments) - review_redmine_links(pr_number, existing_comments) + review_redmine_links(pr_number, pr, existing_comments) end private @@ -82,13 +83,12 @@ class AutoReviewPR end # Suggest re-filing from a fork if the PR branch is in ruby/ruby itself - def review_non_fork_branch(pr_number, existing_comments) + def review_non_fork_branch(pr_number, pr, existing_comments) if already_commented?(existing_comments, FORK_COMMENT_PREFIX) puts "Skipped: The PR ##{pr_number} already has a fork branch comment." return end - pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}") head_repo = pr.dig(:head, :repo, :full_name) if head_repo != REPO puts "Skipped: The PR ##{pr_number} is already from a fork (#{head_repo})." @@ -124,13 +124,12 @@ class AutoReviewPR post_comment(pr_number, format_upstream_comment(upstream_repos)) end - def review_redmine_links(pr_number, existing_comments) + def review_redmine_links(pr_number, pr, existing_comments) if already_commented?(existing_comments, REDMINE_COMMENT_PREFIX) puts "Skipped: The PR ##{pr_number} already has a Redmine links comment." return end - pr = @client.get("/repos/#{REPO}/pulls/#{pr_number}") text = "#{pr[:title]}\n#{pr[:body]}" tickets = text.scan(REDMINE_TICKET_PATTERN).uniq |
