Class: Gem::Commands::UninstallCommand

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

Overview

Gem uninstaller command line tool

See ‘gem help uninstall`

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, #begins?, build_args, build_args=, common_options, #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, #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

#initializeUninstallCommand



14
15
16
17
18
19
20
21
22
23
24
25
26
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
# File 'lib/rubygems/commands/uninstall_command.rb', line 14

def initialize
  super 'uninstall', 'Uninstall gems from the local repository',
        :version => Gem::Requirement.default, :user_install => true

  add_option('-a', '--[no-]all',
    'Uninstall all matching versions'
    ) do |value, options|
    options[:all] = value
  end

  add_option('-I', '--[no-]ignore-dependencies',
             'Ignore dependency requirements while',
             'uninstalling') do |value, options|
    options[:ignore] = value
  end

  add_option('-x', '--[no-]executables',
               'Uninstall applicable executables without',
               'confirmation') do |value, options|
    options[:executables] = value
  end

  add_option('-i', '--install-dir DIR',
             'Directory to uninstall gem from') do |value, options|
    options[:install_dir] = File.expand_path(value)
  end

  add_option('-n', '--bindir DIR',
             'Directory to remove binaries from') do |value, options|
    options[:bin_dir] = File.expand_path(value)
  end

  add_option('--[no-]user-install',
             'Uninstall from user\'s home directory',
             'in addition to GEM_HOME.') do |value, options|
    options[:user_install] = value
  end

  add_option('--[no-]format-executable',
             'Assume executable names match Ruby\'s prefix and suffix.') do |value, options|
    options[:format_executable] = value
  end

  add_version_option
  add_platform_option
end

Instance Method Details

#argumentsObject

:nodoc:



61
62
63
# File 'lib/rubygems/commands/uninstall_command.rb', line 61

def arguments # :nodoc:
  "GEMNAME       name of gem to uninstall"
end

#defaults_strObject

:nodoc:



65
66
67
68
69
# File 'lib/rubygems/commands/uninstall_command.rb', line 65

def defaults_str # :nodoc:
  "--version '#{Gem::Requirement.default}' --no-force " \
  "--install-dir #{Gem.dir}\n" \
  "--user-install"
end

#executeObject



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/rubygems/commands/uninstall_command.rb', line 75

def execute
  original_path = Gem.path

  get_all_gem_names.each do |gem_name|
    begin
      Gem::Uninstaller.new(gem_name, options).uninstall
    rescue Gem::InstallError => e
      alert e.message
    rescue Gem::GemNotInHomeException => e
      spec = e.spec
      alert("In order to remove #{spec.name}, please execute:\n" \
            "\tgem uninstall #{spec.name} --install-dir=#{spec.installation_path}")
    ensure
      Gem.use_paths(*original_path)
    end
  end
end

#usageObject

:nodoc:



71
72
73
# File 'lib/rubygems/commands/uninstall_command.rb', line 71

def usage # :nodoc:
  "#{program_name} GEMNAME [GEMNAME ...]"
end