Class: LibGems::Commands::CheckCommand

Inherits:
LibGems::Command show all
Includes:
VersionOption
Defined in:
lib/libgems/commands/check_command.rb

Instance Attribute Summary

Attributes inherited from LibGems::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 LibGems::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

#methname

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
26
27
28
29
30
31
32
33
# File 'lib/libgems/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_option('-v', '--verbose', "Spew more words") do |value, options|
    options[:verbose] = true
  end

  add_option('-t', '--test', "Run unit tests for gem") do |value, options|
    options[:test] = true
  end

  add_version_option 'run tests for'
end

Instance Method Details

#executeObject



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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/libgems/commands/check_command.rb', line 35

def execute
  if options[:test]
    version = options[:version] || LibGems::Requirement.default
    dep = LibGems::Dependency.new get_one_gem_name, version
    gem_spec = LibGems::SourceIndex.from_installed_gems.search(dep).first
    LibGems::Validator.new.unit_test(gem_spec)
  end

  if options[:alien]
    say "Performing the 'alien' operation"
    say
    gems = get_all_gem_names rescue []
    LibGems::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 options[: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
      LibGems::Validator.new.verify_gem_file(gem_name)
    rescue Exception
      alert_error "#{gem_name} is invalid."
    end
  end
end