Handle TapFormulaAmbiguityError
in diagnostics.
This commit is contained in:
parent
9056613181
commit
ce60048192
@ -841,7 +841,13 @@ module Homebrew
|
||||
Formulary::FromAPILoader,
|
||||
Formulary::FromNameLoader,
|
||||
].any? do |loader_class|
|
||||
if (loader = loader_class.try_new(keg.name, warn: false))
|
||||
loader = begin
|
||||
loader_class.try_new(keg.name, warn: false)
|
||||
rescue TapFormulaAmbiguityError => e
|
||||
e.loaders.first
|
||||
end
|
||||
|
||||
if loader
|
||||
# If we know the tap, ignore all other taps.
|
||||
next false if tap && loader.tap != tap
|
||||
|
||||
|
@ -259,11 +259,12 @@ end
|
||||
|
||||
# Raised when a formula with the same name is found in multiple taps.
|
||||
class TapFormulaAmbiguityError < RuntimeError
|
||||
attr_reader :name, :taps
|
||||
attr_reader :name, :taps, :loaders
|
||||
|
||||
def initialize(name, taps)
|
||||
def initialize(name, loaders)
|
||||
@name = name
|
||||
@taps = taps
|
||||
@loaders = loaders
|
||||
@taps = loaders.map(&:tap)
|
||||
|
||||
formulae = taps.map { |tap| "#{tap}/#{name}" }
|
||||
formula_list = formulae.map { |f| "\n * #{f}" }.join
|
||||
|
@ -772,7 +772,7 @@ module Formulary
|
||||
when 1
|
||||
loaders.first
|
||||
when 2..Float::INFINITY
|
||||
raise TapFormulaAmbiguityError.new(name, loaders.map(&:tap))
|
||||
raise TapFormulaAmbiguityError.new(name, loaders)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user