diff --git a/Library/Homebrew/cmd/cleanup.rb b/Library/Homebrew/cmd/cleanup.rb index 6c3b9ffbf7..9a211dcbc1 100644 --- a/Library/Homebrew/cmd/cleanup.rb +++ b/Library/Homebrew/cmd/cleanup.rb @@ -31,8 +31,7 @@ module Homebrew end def cleanup_cellar - return unless HOMEBREW_CELLAR.directory? - HOMEBREW_CELLAR.subdirs.each do |rack| + Formula.racks.each do |rack| begin cleanup_formula Formulary.from_rack(rack) rescue FormulaUnavailableError, TapFormulaAmbiguityError diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index 854344bd41..21c04ed46f 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -22,7 +22,7 @@ module Homebrew def print_info if ARGV.named.empty? if HOMEBREW_CELLAR.exist? - count = HOMEBREW_CELLAR.subdirs.length + count = Formula.racks.length puts "#{count} keg#{plural(count)}, #{HOMEBREW_CELLAR.abv}" end else diff --git a/Library/Homebrew/cmd/linkapps.rb b/Library/Homebrew/cmd/linkapps.rb index f484d98508..9a58bd37a9 100644 --- a/Library/Homebrew/cmd/linkapps.rb +++ b/Library/Homebrew/cmd/linkapps.rb @@ -1,5 +1,6 @@ # Links any Applications (.app) found in installed prefixes to /Applications require "keg" +require "formula" module Homebrew def linkapps @@ -12,8 +13,7 @@ module Homebrew end if ARGV.named.empty? - racks = HOMEBREW_CELLAR.subdirs - kegs = racks.map do |rack| + kegs = Formula.racks.map do |rack| keg = rack.subdirs.map { |d| Keg.new(d) } next if keg.empty? keg.detect(&:linked?) || keg.max { |a, b| a.version <=> b.version } diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb index cdb0e68599..b35b0e3891 100644 --- a/Library/Homebrew/cmd/list.rb +++ b/Library/Homebrew/cmd/list.rb @@ -78,7 +78,7 @@ module Homebrew def filtered_list names = if ARGV.named.empty? - HOMEBREW_CELLAR.subdirs + Formula.racks else ARGV.named.map { |n| HOMEBREW_CELLAR+n }.select(&:exist?) end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 7aa44c44f2..c457dbc02b 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -809,20 +809,25 @@ class Formula end end - # An array of all installed {Formula} - def self.installed - @installed ||= if HOMEBREW_CELLAR.directory? - HOMEBREW_CELLAR.subdirs.map do |rack| - begin - Formulary.from_rack(rack) - rescue FormulaUnavailableError, TapFormulaAmbiguityError - end - end.compact + # An array of all racks currently installed. + def self.racks + @racks ||= if HOMEBREW_CELLAR.directory? + HOMEBREW_CELLAR.subdirs.reject(&:symlink?) else [] end end + # An array of all installed {Formula} + def self.installed + @installed ||= racks.map do |rack| + begin + Formulary.from_rack(rack) + rescue FormulaUnavailableError, TapFormulaAmbiguityError + end + end.compact + end + def self.aliases Dir["#{HOMEBREW_LIBRARY}/Aliases/*"].map { |f| File.basename f }.sort end