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