aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorilovezfs2017-02-12 09:22:26 -0800
committerilovezfs2017-02-12 10:36:24 -0800
commit539120143bad6ffb9a8a7c3e2ab76c6bc951036e (patch)
treebd3f82ceafcd442552951345f7190f0a09e62596 /Library
parent08c75616396371be93ab6129a71c5d8b91d6c2be (diff)
downloadbrew-539120143bad6ffb9a8a7c3e2ab76c6bc951036e.tar.bz2
bump-formula-pr: block duplicate pull-requests
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]