diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index b05ce2ed2f..3c82bf25ac 100644 --- a/Library/Homebrew/brew.h.rb +++ b/Library/Homebrew/brew.h.rb @@ -385,6 +385,20 @@ def versions_of(keg_name) end +def outdated_brews + require 'formula' + + results = [] + HOMEBREW_CELLAR.subdirs.each do |keg| + next unless keg.subdirs + name = keg.basename.to_s + if (not (f = Formula.factory(name)).installed? rescue nil) + results << [keg, name, f.version] + end + end + return results +end + ########################################################## class PrettyListing class PrettyListing def initialize path diff --git a/bin/brew b/bin/brew index f7486e1d19..01d95f85d1 100755 --- a/bin/brew +++ b/bin/brew @@ -366,18 +366,12 @@ begin exec "cat", ARGV.formulae.first.path, *ARGV.options when 'outdated' - require 'formula' - HOMEBREW_CELLAR.subdirs.each do |keg| - if keg.subdirs.length > 0 - name = keg.basename('.rb').to_s - if (not (f = Formula.factory(name)).installed? rescue nil) - if $stdout.tty? and not ARGV.flag? '--quiet' - versions = keg.cd{ Dir['*'] }.join(', ') - puts "#{name} (#{versions} < #{f.version})" - else - puts name - end - end + outdated_brews.each do |keg, name, version| + if $stdout.tty? and not ARGV.flag? '--quiet' + versions = keg.cd{ Dir['*'] }.join(', ') + puts "#{name} (#{versions} < #{version})" + else + puts name end end