Merge pull request #10405 from SeekingMeaning/unreadable-named-args
named_args: raise error if formula/cask is found but unreadable
This commit is contained in:
commit
99b1303cef
@ -50,6 +50,12 @@ module Homebrew
|
|||||||
@to_formulae_and_casks ||= {}
|
@to_formulae_and_casks ||= {}
|
||||||
@to_formulae_and_casks[only] ||= downcased_unique_named.flat_map do |name|
|
@to_formulae_and_casks[only] ||= downcased_unique_named.flat_map do |name|
|
||||||
load_formula_or_cask(name, only: only, method: method)
|
load_formula_or_cask(name, only: only, method: method)
|
||||||
|
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
||||||
|
TapFormulaUnreadableError, TapFormulaClassUnavailableError,
|
||||||
|
Cask::CaskUnreadableError
|
||||||
|
# Need to rescue before `*UnavailableError` (superclass of this)
|
||||||
|
# The formula/cask was found, but there's a problem with its implementation
|
||||||
|
raise
|
||||||
rescue NoSuchKegError, FormulaUnavailableError, Cask::CaskUnavailableError
|
rescue NoSuchKegError, FormulaUnavailableError, Cask::CaskUnavailableError
|
||||||
ignore_unavailable ? [] : raise
|
ignore_unavailable ? [] : raise
|
||||||
end.uniq.freeze
|
end.uniq.freeze
|
||||||
@ -72,6 +78,8 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def load_formula_or_cask(name, only: nil, method: nil)
|
def load_formula_or_cask(name, only: nil, method: nil)
|
||||||
|
unreadable_errors = []
|
||||||
|
|
||||||
if only != :cask
|
if only != :cask
|
||||||
begin
|
begin
|
||||||
formula = case method
|
formula = case method
|
||||||
@ -90,6 +98,11 @@ module Homebrew
|
|||||||
|
|
||||||
warn_if_cask_conflicts(name, "formula") unless only == :formula
|
warn_if_cask_conflicts(name, "formula") unless only == :formula
|
||||||
return formula
|
return formula
|
||||||
|
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
||||||
|
TapFormulaUnreadableError, TapFormulaClassUnavailableError => e
|
||||||
|
# Need to rescue before `FormulaUnavailableError` (superclass of this)
|
||||||
|
# The formula was found, but there's a problem with its implementation
|
||||||
|
unreadable_errors << e
|
||||||
rescue NoSuchKegError, FormulaUnavailableError => e
|
rescue NoSuchKegError, FormulaUnavailableError => e
|
||||||
raise e if only == :formula
|
raise e if only == :formula
|
||||||
end
|
end
|
||||||
@ -98,11 +111,17 @@ module Homebrew
|
|||||||
if only != :formula
|
if only != :formula
|
||||||
begin
|
begin
|
||||||
return Cask::CaskLoader.load(name, config: Cask::Config.from_args(@parent))
|
return Cask::CaskLoader.load(name, config: Cask::Config.from_args(@parent))
|
||||||
|
rescue Cask::CaskUnreadableError => e
|
||||||
|
# Need to rescue before `CaskUnavailableError` (superclass of this)
|
||||||
|
# The cask was found, but there's a problem with its implementation
|
||||||
|
unreadable_errors << e
|
||||||
rescue Cask::CaskUnavailableError => e
|
rescue Cask::CaskUnavailableError => e
|
||||||
raise e if only == :cask
|
raise e if only == :cask
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
raise unreadable_errors.first if unreadable_errors.count == 1
|
||||||
|
|
||||||
raise FormulaOrCaskUnavailableError, name
|
raise FormulaOrCaskUnavailableError, name
|
||||||
end
|
end
|
||||||
private :load_formula_or_cask
|
private :load_formula_or_cask
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user