Skip to content
Snippets Groups Projects
Commit 37cd547d authored by Xu Cheng's avatar Xu Cheng
Browse files

Formula: cache methods' output to reduce io


Closes Homebrew/homebrew#40855.

Signed-off-by: default avatarXu Cheng <xucheng@me.com>
parent adafb6c9
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment