summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2026-04-16 09:58:55 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2026-04-16 10:20:19 +0900
commit1daa0eae991de017d94e1e15334612e67a47e9c9 (patch)
tree01a59b993975b79c48ef6b6e7bb4d3303f636680
parent8177af52da8d6978cfd22ea20e99a4262acd2b28 (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-xtool/auto_review_pr.rb11
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