60 lines
1.8 KiB
Ruby
60 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Versions
|
|
module_function
|
|
|
|
def current_formula_version(formula_name)
|
|
Formula[formula_name].version.to_s.to_f
|
|
end
|
|
|
|
def bump_formula_pr(formula_name, url)
|
|
Utils.popen_read("brew", "bump-formula-pr", "--no-browse", "--dry-run",
|
|
formula_name, "--url=#{url}").chomp
|
|
end
|
|
|
|
def livecheck_formula(formula)
|
|
ohai "Checking livecheck formula : #{formula}" if Homebrew.args.verbose?
|
|
|
|
response = Utils.popen_read(HOMEBREW_BREW_FILE, "livecheck", formula, "--quiet").chomp
|
|
|
|
parse_livecheck_response(response)
|
|
end
|
|
|
|
def parse_livecheck_response(response)
|
|
output = response.delete(" ").split(/:|==>/)
|
|
|
|
# eg: ["openclonk", "7.0", "8.1"]
|
|
package_name, brew_version, latest_version = output
|
|
|
|
{
|
|
name: package_name,
|
|
formula_version: brew_version,
|
|
livecheck_version: latest_version,
|
|
}
|
|
end
|
|
|
|
def fetch_pull_requests(query, tap_full_name, state: nil)
|
|
GitHub.issues_for_formula(query, tap_full_name: tap_full_name, state: state).select do |pr|
|
|
pr["html_url"].include?("/pull/") &&
|
|
/(^|\s)#{Regexp.quote(query)}(:|\s|$)/i =~ pr["title"]
|
|
end
|
|
rescue GitHub::RateLimitExceededError => e
|
|
opoo e.message
|
|
[]
|
|
end
|
|
|
|
def check_for_duplicate_pull_requests(formula, version)
|
|
formula = Formula[formula]
|
|
tap_full_name = formula.tap&.full_name
|
|
|
|
# check for open requests
|
|
pull_requests = fetch_pull_requests(formula.name, tap_full_name, state: "open")
|
|
|
|
# if we haven't already found open requests, try for an exact match across all requests
|
|
pull_requests = fetch_pull_requests("#{formula.name} #{version}", tap_full_name) if pull_requests.blank?
|
|
return if pull_requests.blank?
|
|
|
|
pull_requests.map { |pr| { title: pr["title"], url: pr["html_url"] } }
|
|
end
|
|
end
|