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/Homebrew/cmd/missing.rb | |
| 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/Homebrew/cmd/missing.rb')
| -rw-r--r-- | Library/Homebrew/cmd/missing.rb | 32 | 
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 | 
