aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/dev-cmd/bump-formula-pr.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb
index 68bf32d0b..ea2daf1c4 100644
--- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb
+++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb
@@ -78,8 +78,43 @@ module Homebrew
end
end
+ def fetch_pull_requests(formula)
+ GitHub.issues_for_formula(formula.name, tap: formula.tap).select do |pr|
+ pr["html_url"].include?("/pull/")
+ end
+ rescue GitHub::RateLimitExceededError => e
+ opoo e.message
+ []
+ end
+
+ def check_for_duplicate_pull_requests(formula)
+ pull_requests = fetch_pull_requests(formula)
+ return unless pull_requests && !pull_requests.empty?
+ duplicates_message = <<-EOS.undent
+ These open pull requests may be duplicates:
+ #{pull_requests.map { |pr| "#{pr["title"]} #{pr["html_url"]}" }.join("\n")}
+ EOS
+ error_message = "Duplicate PRs should not be opened. Use --force to override this error."
+ if ARGV.force? && !ARGV.flag?("--quiet")
+ opoo duplicates_message
+ elsif !ARGV.force? && ARGV.flag?("--quiet")
+ odie error_message
+ elsif !ARGV.force?
+ odie <<-EOS.undent
+ #{duplicates_message.chomp}
+ #{error_message}
+ EOS
+ end
+ end
+
def bump_formula_pr
formula = ARGV.formulae.first
+
+ if formula
+ check_for_duplicate_pull_requests(formula)
+ checked_for_duplicates = true
+ end
+
new_url = ARGV.value("url")
if new_url && !formula
is_devel = ARGV.include?("--devel")
@@ -101,6 +136,8 @@ module Homebrew
end
odie "No formula found!" unless formula
+ check_for_duplicate_pull_requests(formula) unless checked_for_duplicates
+
requested_spec, formula_spec = if ARGV.include?("--devel")
devel_message = " (devel)"
[:devel, formula.devel]