summaryrefslogtreecommitdiff
path: root/lib/rubygems/commands/outdated_command.rb
blob: 9c0062019b7bb390b87342705545d2cf2ad23a94 (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
27
28
29
30
require 'rubygems/command'
require 'rubygems/local_remote_options'
require 'rubygems/source_info_cache'
require 'rubygems/version_option'

class Gem::Commands::OutdatedCommand < Gem::Command

  include Gem::LocalRemoteOptions
  include Gem::VersionOption

  def initialize
    super 'outdated', 'Display all gems that need updates'

    add_local_remote_options
    add_platform_option
  end

  def execute
    locals = Gem::SourceIndex.from_installed_gems

    locals.outdated.sort.each do |name|
      local = locals.search(/^#{name}$/).last
      remotes = Gem::SourceInfoCache.search_with_source(/^#{name}$/, true)
      remote = remotes.last.first
      say "#{local.name} (#{local.version} < #{remote.version})"
    end
  end

end