diff options
Diffstat (limited to 'Library/Homebrew/cmd/missing.rb')
| -rw-r--r-- | Library/Homebrew/cmd/missing.rb | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/Library/Homebrew/cmd/missing.rb b/Library/Homebrew/cmd/missing.rb new file mode 100644 index 000000000..26d6e3340 --- /dev/null +++ b/Library/Homebrew/cmd/missing.rb @@ -0,0 +1,48 @@ +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? +    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 + +      unless missing_deps.empty? +        brews << [f.name, missing_deps] +      end +    end +    brews +  end + +  def missing +    return unless HOMEBREW_CELLAR.exist? + +    formulae_to_check = 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 +      puts "#{missing * ' '}" +    end +  end +end | 
