aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/missing.rb
diff options
context:
space:
mode:
authorJack Nagel2012-08-14 11:57:10 -0500
committerJack Nagel2012-08-18 11:25:59 -0500
commit094ce49859a3aa7550419addd36a0d15f3152cf7 (patch)
treed1bb114045e18c79f0009a6112f8207816184052 /Library/Homebrew/cmd/missing.rb
parentce604c642d830f96fe7aced5452650cf9867cb9d (diff)
downloadhomebrew-094ce49859a3aa7550419addd36a0d15f3152cf7.tar.bz2
Refactor `brew missing`
The heuristic for determining whether something is installed changes from "f.installed?" to "f.rack.exist? and f.rack.subdirs.length > 0" in order to properly consider outdated formulae. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library/Homebrew/cmd/missing.rb')
-rw-r--r--Library/Homebrew/cmd/missing.rb32
1 files changed, 13 insertions, 19 deletions
diff --git a/Library/Homebrew/cmd/missing.rb b/Library/Homebrew/cmd/missing.rb
index 26d6e3340..7f4417081 100644
--- a/Library/Homebrew/cmd/missing.rb
+++ b/Library/Homebrew/cmd/missing.rb
@@ -1,47 +1,41 @@
require 'formula'
-require 'cmd/outdated'
module Homebrew extend self
def installed_brews
formulae = []
HOMEBREW_CELLAR.subdirs.each do |rack|
f = Formula.factory rack.basename.to_s rescue nil
- formulae << f if f and f.installed?
+ formulae << f if f and f.rack.exist? and f.rack.subdirs.length > 0
end
formulae
end
- def find_missing_brews top_level
- # Names of outdated brews; they count as installed.
- outdated = Homebrew.outdated_brews.collect{ |b| b.name }
-
- brews = []
- top_level.each do |f|
- missing_deps = f.recursive_deps.map{ |g| g.name }.uniq.reject do |dep_name|
- Formula.factory(dep_name).installed? or outdated.include?(dep_name)
- end
+ def missing_deps ff
+ missing = {}
+ ff.each do |f|
+ missing_deps = f.recursive_deps.uniq.reject do |dep|
+ dep.rack.exist? and dep.rack.subdirs.length > 0
+ end
unless missing_deps.empty?
- brews << [f.name, missing_deps]
+ yield f.name, missing_deps if block_given?
+ missing[f.name] = missing_deps
end
end
- brews
+ missing
end
def missing
return unless HOMEBREW_CELLAR.exist?
- formulae_to_check = if ARGV.named.empty?
+ ff = if ARGV.named.empty?
installed_brews
else
ARGV.formulae
end
- missing_deps = find_missing_brews(formulae_to_check)
- missing_deps.each do |d|
- name = d[0]
- missing = d[1]
- print "#{name}: " if formulae_to_check.size > 1
+ missing_deps(ff) do |name, missing|
+ print "#{name}: " if ff.size > 1
puts "#{missing * ' '}"
end
end