ruby/lib/rubygems/commands/stale_command.rb
nagachika 996b1bfa95 merge revision(s) 53707,53708,53709,53712,53777,53781: [Backport #12326]
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.5.2.
	  It supports to enable frozen string literal and add `--norc` option for
	  disable to `.gemrc` configuration.
	  See 2.5.2 release notes for other fixes and enhancements.
	  a8aa3bac72/History.txt (L3)

	* lib/rubygems/specification.rb: `coding` is affect only first line except
	  shebang.

	* lib/rubygems/package.rb, lib/rubygems/package/*: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@56003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-24 15:28:23 +00:00

39 lines
962 B
Ruby

# frozen_string_literal: true
require 'rubygems/command'
class Gem::Commands::StaleCommand < Gem::Command
def initialize
super('stale', 'List gems along with access times')
end
def description # :nodoc:
<<-EOF
The stale command lists the latest access time for all the files in your
installed gems.
You can use this command to discover gems and gem versions you are no
longer using.
EOF
end
def usage # :nodoc:
"#{program_name}"
end
def execute
gem_to_atime = {}
Gem::Specification.each do |spec|
name = spec.full_name
Dir["#{spec.full_gem_path}/**/*.*"].each do |file|
next if File.directory?(file)
stat = File.stat(file)
gem_to_atime[name] ||= stat.atime
gem_to_atime[name] = stat.atime if gem_to_atime[name] < stat.atime
end
end
gem_to_atime.sort_by { |_, atime| atime }.each do |name, atime|
say "#{name} at #{atime.strftime '%c'}"
end
end
end