Merge pull request #1997 from ilovezfs/block-duplicate-pull-requests
bump-formula-pr: block duplicate pull-requests
This commit is contained in:
commit
9c3825fc77
@ -78,8 +78,43 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
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
|
def bump_formula_pr
|
||||||
formula = ARGV.formulae.first
|
formula = ARGV.formulae.first
|
||||||
|
|
||||||
|
if formula
|
||||||
|
check_for_duplicate_pull_requests(formula)
|
||||||
|
checked_for_duplicates = true
|
||||||
|
end
|
||||||
|
|
||||||
new_url = ARGV.value("url")
|
new_url = ARGV.value("url")
|
||||||
if new_url && !formula
|
if new_url && !formula
|
||||||
is_devel = ARGV.include?("--devel")
|
is_devel = ARGV.include?("--devel")
|
||||||
@ -101,6 +136,8 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
odie "No formula found!" unless formula
|
odie "No formula found!" unless formula
|
||||||
|
|
||||||
|
check_for_duplicate_pull_requests(formula) unless checked_for_duplicates
|
||||||
|
|
||||||
requested_spec, formula_spec = if ARGV.include?("--devel")
|
requested_spec, formula_spec = if ARGV.include?("--devel")
|
||||||
devel_message = " (devel)"
|
devel_message = " (devel)"
|
||||||
[:devel, formula.devel]
|
[:devel, formula.devel]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user