aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/outdated.rb
blob: f90e933f3018d4e43771f48c9df33022edf9c806 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
require 'formula'
require 'keg'

module Homebrew
  def outdated
    outdated_brews do |f, versions|
      if ($stdout.tty? || ARGV.verbose?) and not ARGV.flag? '--quiet'
        puts "#{f.name} (#{versions*', '} < #{f.pkg_version})"
      else
        puts f.name
      end
    end
    Homebrew.failed = ARGV.formulae.any? && outdated_brews.any?
  end

  def outdated_brews
    brews = ARGV.formulae.any? ? ARGV.formulae : Formula.installed
    brews.map do |f|
      versions = f.rack.subdirs.map { |d| Keg.new(d).version }.sort!
        if versions.all? { |version| f.pkg_version > version }
        yield f, versions if block_given?
        f
      end
    end.compact
  end
end