Disambiguate formulae/casks from different taps

This commit is contained in:
nandahkrishna 2021-03-04 01:39:37 +05:30
parent 6efb37206f
commit ab0e427d3e
No known key found for this signature in database
GPG Key ID: 067E5FCD58ADF3AA
2 changed files with 29 additions and 7 deletions

View File

@ -16,6 +16,8 @@ module Homebrew
Display out-of-date brew formulae and the latest version available.
Also displays whether a pull request has been opened with the URL.
EOS
switch "--full-name",
description: "Print formulae/casks with fully-qualified names."
switch "--no-pull-requests",
description: "Do not retrieve pull requests from GitHub."
switch "--formula", "--formulae",
@ -63,10 +65,19 @@ module Homebrew
.select { |item| item.is_a?(Cask::Cask) }
end
ambiguous_names = []
unless args.full_name?
ambiguous_names = (formulae_and_casks - ambiguous_casks)
.group_by { |item| Livecheck.formula_or_cask_name(item) }
.select { |_name, items| items.length > 1 }
.values.flatten
end
formulae_and_casks.each_with_index do |formula_or_cask, i|
puts if i.positive?
name = Livecheck.formula_or_cask_name(formula_or_cask)
use_full_name = args.full_name? || ambiguous_names.include?(formula_or_cask)
name = Livecheck.formula_or_cask_name(formula_or_cask, full_name: use_full_name)
repository = if formula_or_cask.is_a?(Formula)
if formula_or_cask.head_only?
ohai name

View File

@ -112,6 +112,14 @@ module Homebrew
.select { |item| item.is_a?(Cask::Cask) }
end
ambiguous_names = []
unless full_name
ambiguous_names = (formulae_and_casks_to_check - ambiguous_casks)
.group_by { |item| formula_or_cask_name(item) }
.select { |_name, items| items.length > 1 }
.values.flatten
end
has_a_newer_upstream_version = T.let(false, T::Boolean)
if json && !quiet && $stderr.tty?
@ -133,7 +141,9 @@ module Homebrew
formulae_checked = formulae_and_casks_to_check.map.with_index do |formula_or_cask, i|
formula = formula_or_cask if formula_or_cask.is_a?(Formula)
cask = formula_or_cask if formula_or_cask.is_a?(Cask::Cask)
name = formula_or_cask_name(formula_or_cask, full_name: full_name)
use_full_name = full_name || ambiguous_names.include?(formula_or_cask)
name = formula_or_cask_name(formula_or_cask, full_name: use_full_name)
if debug && i.positive?
puts <<~EOS
@ -145,7 +155,7 @@ module Homebrew
puts
end
skip_info = SkipConditions.skip_information(formula_or_cask, full_name: full_name, verbose: verbose)
skip_info = SkipConditions.skip_information(formula_or_cask, full_name: use_full_name, verbose: verbose)
if skip_info.present?
next skip_info if json
@ -177,7 +187,7 @@ module Homebrew
else
version_info = latest_version(
formula_or_cask,
json: json, full_name: full_name, verbose: verbose, debug: debug,
json: json, full_name: use_full_name, verbose: verbose, debug: debug,
)
version_info[:latest] if version_info.present?
end
@ -188,7 +198,7 @@ module Homebrew
next version_info if version_info.is_a?(Hash) && version_info[:status] && version_info[:messages]
next status_hash(formula_or_cask, "error", [no_versions_msg], full_name: full_name, verbose: verbose)
next status_hash(formula_or_cask, "error", [no_versions_msg], full_name: use_full_name, verbose: verbose)
end
if (m = latest.to_s.match(/(.*)-release$/)) && !current.to_s.match(/.*-release$/)
@ -237,12 +247,13 @@ module Homebrew
nil
rescue => e
Homebrew.failed = true
use_full_name = full_name || ambiguous_names.include?(formula_or_cask)
if json
progress&.increment
status_hash(formula_or_cask, "error", [e.to_s], full_name: full_name, verbose: verbose)
status_hash(formula_or_cask, "error", [e.to_s], full_name: use_full_name, verbose: verbose)
elsif !quiet
name = formula_or_cask_name(formula_or_cask, full_name: full_name)
name = formula_or_cask_name(formula_or_cask, full_name: use_full_name)
name += " (cask)" if ambiguous_casks.include?(formula_or_cask)
onoe "#{Tty.blue}#{name}#{Tty.reset}: #{e}"