class Gem::Commands::CheckCommand

Public Class Methods

new() click to toggle source
Calls superclass method Gem::Command::new
# File rubygems/commands/check_command.rb, line 11
def initialize
  super "check", "Check a gem repository for added or missing files",
        :alien => true, :doctor => false, :dry_run => false, :gems => true

  add_option("-a", "--[no-]alien",
             'Report "unmanaged" or rogue files in the',
             "gem repository") do |value, options|
    options[:alien] = value
  end

  add_option("--[no-]doctor",
             "Clean up uninstalled gems and broken",
             "specifications") do |value, options|
    options[:doctor] = value
  end

  add_option("--[no-]dry-run",
             "Do not remove files, only report what",
             "would be removed") do |value, options|
    options[:dry_run] = value
  end

  add_option("--[no-]gems",
             "Check installed gems for problems") do |value, options|
    options[:gems] = value
  end

  add_version_option "check"
end

Public Instance Methods

check_gems() click to toggle source
# File rubygems/commands/check_command.rb, line 41
def check_gems
  say "Checking gems..."
  say
  gems = begin
           get_all_gem_names
         rescue StandardError
           []
         end

  Gem::Validator.new.alien(gems).sort.each do |key, val|
    if val.empty?
      say "#{key} is error-free" if Gem.configuration.verbose
    else
      say "#{key} has #{val.size} problems"
      val.each do |error_entry|
        say "  #{error_entry.path}:"
        say "    #{error_entry.problem}"
      end
    end
    say
  end
end
doctor() click to toggle source
# File rubygems/commands/check_command.rb, line 64
def doctor
  say "Checking for files from uninstalled gems..."
  say

  Gem.path.each do |gem_repo|
    doctor = Gem::Doctor.new gem_repo, options[:dry_run]
    doctor.doctor
  end
end
execute() click to toggle source
# File rubygems/commands/check_command.rb, line 74
def execute
  check_gems if options[:gems]
  doctor if options[:doctor]
end