mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
install: don't search when formula is unreadable.
These formulae are detected as missing but exist in an unreadable form. Fixes #2485
This commit is contained in:
parent
417f49dd32
commit
1330b74416
@ -206,7 +206,8 @@ module Homebrew
|
|||||||
Migrator.migrate_if_needed(f)
|
Migrator.migrate_if_needed(f)
|
||||||
install_formula(f)
|
install_formula(f)
|
||||||
end
|
end
|
||||||
rescue FormulaClassUnavailableError => e
|
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
||||||
|
TapFormulaUnreadableError, TapFormulaClassUnavailableError => e
|
||||||
# Need to rescue before `FormulaUnavailableError` (superclass of this)
|
# Need to rescue before `FormulaUnavailableError` (superclass of this)
|
||||||
# is handled, as searching for a formula doesn't make sense here (the
|
# is handled, as searching for a formula doesn't make sense here (the
|
||||||
# formula was found, but there's a problem with its implementation).
|
# formula was found, but there's a problem with its implementation).
|
||||||
|
@ -77,35 +77,11 @@ class FormulaUnavailableError < RuntimeError
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class TapFormulaUnavailableError < FormulaUnavailableError
|
module FormulaClassUnavailableErrorModule
|
||||||
attr_reader :tap, :user, :repo
|
|
||||||
|
|
||||||
def initialize(tap, name)
|
|
||||||
@tap = tap
|
|
||||||
@user = tap.user
|
|
||||||
@repo = tap.repo
|
|
||||||
super "#{tap}/#{name}"
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_s
|
|
||||||
s = super
|
|
||||||
s += "\nPlease tap it and then try again: brew tap #{tap}" unless tap.installed?
|
|
||||||
s
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class FormulaClassUnavailableError < FormulaUnavailableError
|
|
||||||
attr_reader :path
|
attr_reader :path
|
||||||
attr_reader :class_name
|
attr_reader :class_name
|
||||||
attr_reader :class_list
|
attr_reader :class_list
|
||||||
|
|
||||||
def initialize(name, path, class_name, class_list)
|
|
||||||
@path = path
|
|
||||||
@class_name = class_name
|
|
||||||
@class_list = class_list
|
|
||||||
super name
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
s = super
|
s = super
|
||||||
s += "\nIn formula file: #{path}"
|
s += "\nIn formula file: #{path}"
|
||||||
@ -131,16 +107,70 @@ class FormulaClassUnavailableError < FormulaUnavailableError
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class FormulaUnreadableError < FormulaUnavailableError
|
class FormulaClassUnavailableError < FormulaUnavailableError
|
||||||
|
include FormulaClassUnavailableErrorModule
|
||||||
|
|
||||||
|
def initialize(name, path, class_name, class_list)
|
||||||
|
@path = path
|
||||||
|
@class_name = class_name
|
||||||
|
@class_list = class_list
|
||||||
|
super name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module FormulaUnreadableErrorModule
|
||||||
attr_reader :formula_error
|
attr_reader :formula_error
|
||||||
|
|
||||||
|
def to_s
|
||||||
|
"#{name}: " + formula_error.to_s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class FormulaUnreadableError < FormulaUnavailableError
|
||||||
|
include FormulaUnreadableErrorModule
|
||||||
|
|
||||||
def initialize(name, error)
|
def initialize(name, error)
|
||||||
super(name)
|
super(name)
|
||||||
@formula_error = error
|
@formula_error = error
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class TapFormulaUnavailableError < FormulaUnavailableError
|
||||||
|
attr_reader :tap, :user, :repo
|
||||||
|
|
||||||
|
def initialize(tap, name)
|
||||||
|
@tap = tap
|
||||||
|
@user = tap.user
|
||||||
|
@repo = tap.repo
|
||||||
|
super "#{tap}/#{name}"
|
||||||
|
end
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
"#{name}: " + formula_error.to_s
|
s = super
|
||||||
|
s += "\nPlease tap it and then try again: brew tap #{tap}" unless tap.installed?
|
||||||
|
s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class TapFormulaClassUnavailableError < TapFormulaUnavailableError
|
||||||
|
include FormulaClassUnavailableErrorModule
|
||||||
|
|
||||||
|
attr_reader :tap
|
||||||
|
|
||||||
|
def initialize(tap, name, path, class_name, class_list)
|
||||||
|
@path = path
|
||||||
|
@class_name = class_name
|
||||||
|
@class_list = class_list
|
||||||
|
super tap, name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class TapFormulaUnreadableError < TapFormulaUnavailableError
|
||||||
|
include FormulaUnreadableErrorModule
|
||||||
|
|
||||||
|
def initialize(tap, name, error)
|
||||||
|
super(tap, name)
|
||||||
|
@formula_error = error
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -210,6 +210,10 @@ module Formulary
|
|||||||
|
|
||||||
def get_formula(spec, alias_path: nil)
|
def get_formula(spec, alias_path: nil)
|
||||||
super
|
super
|
||||||
|
rescue FormulaUnreadableError => e
|
||||||
|
raise TapFormulaUnreadableError.new(tap, name, e.formula_error), "", e.backtrace
|
||||||
|
rescue FormulaClassUnavailableError => e
|
||||||
|
raise TapFormulaClassUnavailableError.new(tap, name, e.path, e.class_name, e.class_list), "", e.backtrace
|
||||||
rescue FormulaUnavailableError => e
|
rescue FormulaUnavailableError => e
|
||||||
raise TapFormulaUnavailableError.new(tap, name), "", e.backtrace
|
raise TapFormulaUnavailableError.new(tap, name), "", e.backtrace
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user