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 |
