aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXu Cheng2015-08-13 20:35:22 +0800
committerXu Cheng2015-08-14 15:52:56 +0800
commit203cecb463a3f7d94a67251c44c5d28ab4341248 (patch)
treecdd16c0c49b23e2bf35602dfdabecdcb824d6d5d
parentc7a484824c9fa4628cf15b4afa3ad7d38ca3f9a7 (diff)
downloadbrew-203cecb463a3f7d94a67251c44c5d28ab4341248.tar.bz2
add Formula.racks
Also exclude symlink when enumerating installed racks.
-rw-r--r--Library/Homebrew/cmd/cleanup.rb3
-rw-r--r--Library/Homebrew/cmd/info.rb2
-rw-r--r--Library/Homebrew/cmd/linkapps.rb4
-rw-r--r--Library/Homebrew/cmd/list.rb2
-rw-r--r--Library/Homebrew/formula.rb23
5 files changed, 19 insertions, 15 deletions
diff --git a/Library/Homebrew/cmd/cleanup.rb b/Library/Homebrew/cmd/cleanup.rb
index 6c3b9ffbf..9a211dcbc 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 854344bd4..21c04ed46 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 f484d9850..9a58bd37a 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 cdb0e6859..b35b0e389 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 7aa44c44f..c457dbc02 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