Class: Gem::Commands::CheckCommand

Inherits:
Gem::Command show all
Includes:
VersionOption
Defined in:
lib/rubygems/commands/check_command.rb

Instance Attribute Summary

Attributes inherited from Gem::Command

#command, #defaults, #options, #program_name, #summary

Instance Method Summary collapse

Methods included from VersionOption

#add_platform_option, #add_prerelease_option, #add_version_option

Methods inherited from Gem::Command

add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #arguments, #begins?, build_args, build_args=, common_options, #defaults_str, #description, extra_args, extra_args=, #get_all_gem_names, #get_one_gem_name, #get_one_optional_argument, #handle_options, #handles?, #invoke, #merge_options, #remove_option, #show_help, #show_lookup_failure, specific_extra_args, specific_extra_args_hash, #usage, #when_invoked

Methods included from UserInteraction

#alert, #alert_error, #alert_warning, #ask, #ask_for_password, #ask_yes_no, #choose_from_list, #say, #terminate_interaction

Methods included from DefaultUserInteraction

ui, #ui, ui=, #ui=, use_ui, #use_ui

Constructor Details

#initializeCheckCommand

Returns a new instance of CheckCommand.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/rubygems/commands/check_command.rb', line 9

def initialize
  super 'check', 'Check installed gems',
        :verify => false, :alien => false

  add_option(      '--verify FILE',
             'Verify gem file against its internal',
             'checksum') do |value, options|
    options[:verify] = value
  end

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

  add_version_option 'check'
end

Instance Method Details

#executeObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/rubygems/commands/check_command.rb', line 27

def execute
  if options[:alien]
    say "Performing the 'alien' operation"
    say
    gems = get_all_gem_names rescue []
    Gem::Validator.new.alien(gems).sort.each do |key, val|
      unless val.empty? then
        say "#{key} has #{val.size} problems"
        val.each do |error_entry|
          say "  #{error_entry.path}:"
          say "    #{error_entry.problem}"
        end
      else
        say "#{key} is error-free" if Gem.configuration.verbose
      end
      say
    end
  end

  if options[:verify]
    gem_name = options[:verify]
    unless gem_name
      alert_error "Must specify a .gem file with --verify NAME"
      return
    end
    unless File.exist?(gem_name)
      alert_error "Unknown file: #{gem_name}."
      return
    end
    say "Verifying gem: '#{gem_name}'"
    begin
      Gem::Validator.new.verify_gem_file(gem_name)
    rescue Exception
      alert_error "#{gem_name} is invalid."
    end
  end
end