1require 'rubygems/command' 2require 'rubygems/local_remote_options' 3require 'rubygems/spec_fetcher' 4require 'rubygems/version_option' 5 6class Gem::Commands::OutdatedCommand < Gem::Command 7 8 include Gem::LocalRemoteOptions 9 include Gem::VersionOption 10 11 def initialize 12 super 'outdated', 'Display all gems that need updates' 13 14 add_local_remote_options 15 add_platform_option 16 end 17 18 def execute 19 Gem::Specification.outdated.sort.each do |name| 20 local = Gem::Specification.find_all_by_name(name).max 21 dep = Gem::Dependency.new local.name, ">= #{local.version}" 22 remotes, _ = Gem::SpecFetcher.fetcher.spec_for_dependency dep 23 24 next if remotes.empty? 25 26 remotes.sort! { |a,b| a[0].version <=> b[0].version } 27 28 highest = remotes.last.first 29 30 say "#{local.name} (#{local.version} < #{highest.version})" 31 end 32 end 33end 34