diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index c89abe2539006751d53237bbd5763fc3a8047ab8..8335cf96f1025db55a45d2c862c03c10451644ed 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -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