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 ...@@ -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 ...@@ -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
......
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