Merge pull request #14396 from apainintheneck/add-closed-pr-check-to-bump-cmds

Add closed PR check to bump cmds
This commit is contained in:
Mike McQuaid 2023-01-23 13:35:52 +00:00 committed by GitHub
commit 3be12ca066
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 13 deletions

View File

@ -91,7 +91,9 @@ module Homebrew
old_version = cask.version
old_hash = cask.sha256
check_open_pull_requests(cask, args: args)
check_pull_requests(cask, state: "open", args: args)
# if we haven't already found open requests, try for an exact match across closed requests
check_pull_requests(cask, state: "closed", args: args, version: new_version) if new_version.present?
old_contents = File.read(cask.sourcefile_path)
@ -193,12 +195,13 @@ module Homebrew
GitHub.create_bump_pr(pr_info, args: args)
end
def check_open_pull_requests(cask, args:)
def check_pull_requests(cask, state:, args:, version: nil)
tap_remote_repo = cask.tap.remote_repo || cask.tap.full_name
GitHub.check_for_duplicate_pull_requests(cask.token, tap_remote_repo,
state: "open",
file: cask.sourcefile_path.relative_path_from(cask.tap.path).to_s,
args: args)
state: state,
version: version,
file: cask.sourcefile_path.relative_path_from(cask.tap.path).to_s,
args: args)
end
def run_cask_audit(cask, old_contents, args:)

View File

@ -26,7 +26,7 @@ module Homebrew
switch "--cask", "--casks",
description: "Check only casks."
switch "--open-pr",
description: "Open a pull request for the new version if there are none already open."
description: "Open a pull request for the new version if none have been opened yet."
flag "--limit=",
description: "Limit number of package results returned."
flag "--start-with=",
@ -213,9 +213,9 @@ module Homebrew
"error: #{e}"
end
def retrieve_pull_requests(formula_or_cask, name)
def retrieve_pull_requests(formula_or_cask, name, state:, version: nil)
tap_remote_repo = formula_or_cask.tap&.remote_repo || formula_or_cask.tap&.full_name
pull_requests = GitHub.fetch_pull_requests(name, tap_remote_repo, state: "open")
pull_requests = GitHub.fetch_pull_requests(name, tap_remote_repo, state: state, version: version)
if pull_requests.try(:any?)
pull_requests = pull_requests.map { |pr| "#{pr["title"]} (#{Formatter.url(pr["html_url"])})" }.join(", ")
end
@ -248,8 +248,13 @@ module Homebrew
repology_latest
end.presence
pull_requests = if !args.no_pull_requests? && (args.named.present? || new_version)
retrieve_pull_requests(formula_or_cask, name)
open_pull_requests = if !args.no_pull_requests? && (args.named.present? || new_version)
retrieve_pull_requests(formula_or_cask, name, state: "open")
end.presence
closed_pull_requests = if !args.no_pull_requests? && !open_pull_requests && new_version.present?
# if we haven't already found open requests, try for an exact match across closed requests
retrieve_pull_requests(formula_or_cask, name, state: "closed", version: new_version)
end.presence
title_name = ambiguous_cask ? "#{name} (cask)" : name
@ -265,7 +270,8 @@ module Homebrew
Current #{version_name}: #{current_version}
Latest livecheck version: #{livecheck_latest}
Latest Repology version: #{repology_latest}
Open pull requests: #{pull_requests || "none"}
Open pull requests: #{open_pull_requests || "none"}
Closed pull requests: #{closed_pull_requests || "none"}
EOS
return unless args.open_pr?
@ -278,7 +284,8 @@ module Homebrew
end
return unless new_version
return if pull_requests
return if open_pull_requests
return if closed_pull_requests
system HOMEBREW_BREW_FILE, "bump-#{type}-pr", "--no-browse",
"--message=Created by `brew bump`", "--version=#{new_version}", name

View File

@ -511,7 +511,7 @@ module GitHub
return if pull_requests.blank?
duplicates_message = <<~EOS
These pull requests may be duplicates:
These #{state} 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."