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
|
||||
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
|
||||
|
||||
# an array of all tap {Formula} names
|
||||
def self.tap_names
|
||||
Tap.map(&:formula_names).flatten.sort
|
||||
@tap_names ||= Tap.map(&:formula_names).flatten.sort
|
||||
end
|
||||
|
||||
# an array of all {Formula} 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
|
||||
|
||||
# an array of all {Formula} names, which the tap formulae have the fully-qualified name
|
||||
def self.full_names
|
||||
core_names + tap_names
|
||||
@full_names ||= core_names + tap_names
|
||||
end
|
||||
|
||||
def self.each
|
||||
@ -657,14 +657,16 @@ class Formula
|
||||
|
||||
# An array of all installed {Formula}
|
||||
def self.installed
|
||||
return [] unless HOMEBREW_CELLAR.directory?
|
||||
|
||||
HOMEBREW_CELLAR.subdirs.map do |rack|
|
||||
begin
|
||||
Formulary.from_rack(rack)
|
||||
rescue FormulaUnavailableError, TapFormulaAmbiguityError
|
||||
end
|
||||
end.compact
|
||||
@installed ||= if HOMEBREW_CELLAR.directory?
|
||||
HOMEBREW_CELLAR.subdirs.map do |rack|
|
||||
begin
|
||||
Formulary.from_rack(rack)
|
||||
rescue FormulaUnavailableError, TapFormulaAmbiguityError
|
||||
end
|
||||
end.compact
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
def self.aliases
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user