diff options
| author | Adam Vandenberg | 2012-06-11 12:57:51 -0700 |
|---|---|---|
| committer | Adam Vandenberg | 2012-06-12 20:03:26 -0700 |
| commit | ec4b34aa082d9e1eaa54b8a890da924674e9ee0e (patch) | |
| tree | a458d933994a9c25bcef577a49cfce3dcab2aefa /Library/Homebrew/cmd/missing.rb | |
| parent | 644af3696b66b282259b8c952e9f4d927c8314b9 (diff) | |
| download | brew-ec4b34aa082d9e1eaa54b8a890da924674e9ee0e.tar.bz2 | |
Fix doctor's use of missing.
`brew doctor` shelled to `brew missing` and parsed the results.
When VERBOSE was true, this caused an error as extra, unexpected
output is generated.
Make missing an internal command, and give it a programmatic interface.
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 |
