diff options
| author | Jack Nagel | 2012-08-14 11:57:10 -0500 |
|---|---|---|
| committer | Jack Nagel | 2012-08-18 11:25:59 -0500 |
| commit | 094ce49859a3aa7550419addd36a0d15f3152cf7 (patch) | |
| tree | d1bb114045e18c79f0009a6112f8207816184052 /Library | |
| parent | ce604c642d830f96fe7aced5452650cf9867cb9d (diff) | |
| download | homebrew-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')
| -rw-r--r-- | Library/Homebrew/cmd/doctor.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/missing.rb | 32 |
2 files changed, 15 insertions, 22 deletions
diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 7d5a4711a..a553e5dc3 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -764,9 +764,8 @@ end def check_missing_deps return unless HOMEBREW_CELLAR.exist? s = Set.new - missing_deps = Homebrew.find_missing_brews(Homebrew.installed_brews) - missing_deps.each do |m| - s.merge m[1] + Homebrew.missing_deps(Homebrew.installed_brews).each do |_, deps| + s.merge deps end if s.length > 0 then <<-EOS.undent 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 |
