Formula: cache methods' output to reduce io
Closes Homebrew/homebrew#40855. Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
parent
adafb6c953
commit
37cd547d5c
@ -624,22 +624,22 @@ class Formula
|
|||||||
|
|
||||||
# an array of all core {Formula} names
|
# an array of all core {Formula} names
|
||||||
def self.core_names
|
def self.core_names
|
||||||
Dir["#{HOMEBREW_LIBRARY}/Formula/*.rb"].map{ |f| File.basename f, ".rb" }.sort
|
@core_names ||= Dir["#{HOMEBREW_LIBRARY}/Formula/*.rb"].map{ |f| File.basename f, ".rb" }.sort
|
||||||
end
|
end
|
||||||
|
|
||||||
# an array of all tap {Formula} names
|
# an array of all tap {Formula} names
|
||||||
def self.tap_names
|
def self.tap_names
|
||||||
Tap.map(&:formula_names).flatten.sort
|
@tap_names ||= Tap.map(&:formula_names).flatten.sort
|
||||||
end
|
end
|
||||||
|
|
||||||
# an array of all {Formula} names
|
# an array of all {Formula} names
|
||||||
def self.names
|
def self.names
|
||||||
(core_names + tap_names.map { |name| name.split("/")[-1] }).sort.uniq
|
@names ||= (core_names + tap_names.map { |name| name.split("/")[-1] }).sort.uniq
|
||||||
end
|
end
|
||||||
|
|
||||||
# an array of all {Formula} names, which the tap formulae have the fully-qualified name
|
# an array of all {Formula} names, which the tap formulae have the fully-qualified name
|
||||||
def self.full_names
|
def self.full_names
|
||||||
core_names + tap_names
|
@full_names ||= core_names + tap_names
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.each
|
def self.each
|
||||||
@ -657,14 +657,16 @@ class Formula
|
|||||||
|
|
||||||
# An array of all installed {Formula}
|
# An array of all installed {Formula}
|
||||||
def self.installed
|
def self.installed
|
||||||
return [] unless HOMEBREW_CELLAR.directory?
|
@installed ||= if HOMEBREW_CELLAR.directory?
|
||||||
|
|
||||||
HOMEBREW_CELLAR.subdirs.map do |rack|
|
HOMEBREW_CELLAR.subdirs.map do |rack|
|
||||||
begin
|
begin
|
||||||
Formulary.from_rack(rack)
|
Formulary.from_rack(rack)
|
||||||
rescue FormulaUnavailableError, TapFormulaAmbiguityError
|
rescue FormulaUnavailableError, TapFormulaAmbiguityError
|
||||||
end
|
end
|
||||||
end.compact
|
end.compact
|
||||||
|
else
|
||||||
|
[]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.aliases
|
def self.aliases
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user