Class: Gem::Commands::EnvironmentCommand

Inherits:
Gem::Command show all
Defined in:
lib/rubygems/commands/environment_command.rb

Instance Attribute Summary

Attributes inherited from Gem::Command

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

Instance Method Summary collapse

Methods inherited from Gem::Command

add_common_option, #add_extra_args, #add_option, add_specific_extra_args, #begins?, build_args, build_args=, #check_deprecated_options, common_options, #defaults_str, #deprecate_option, #deprecated?, extra_args, extra_args=, #extract_gem_name_and_version, #get_all_gem_names, #get_all_gem_names_and_versions, #get_one_gem_name, #get_one_optional_argument, #handle_options, #handles?, #invoke, #invoke_with_build_args, #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, #verbose

Methods included from DefaultUserInteraction

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

Methods included from Text

#clean_text, #format_text, #levenshtein_distance, #min3, #truncate_text

Constructor Details

#initializeEnvironmentCommand

Returns a new instance of EnvironmentCommand.



6
7
8
# File 'lib/rubygems/commands/environment_command.rb', line 6

def initialize
  super "environment", "Display information about the RubyGems environment"
end

Instance Method Details

#add_path(out, path) ⇒ Object



100
101
102
103
104
# File 'lib/rubygems/commands/environment_command.rb', line 100

def add_path(out, path)
  path.each do |component|
    out << "     - #{component}\n"
  end
end

#argumentsObject

:nodoc:



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/rubygems/commands/environment_command.rb', line 10

def arguments # :nodoc:
  args = <<-EOF
        home            display the path where gems are installed. Aliases: gemhome, gemdir, GEM_HOME
        path            display path used to search for gems. Aliases: gempath, GEM_PATH
        user_gemhome    display the path where gems are installed when `--user-install` is given. Aliases: user_gemdir
        version         display the gem format version
        remotesources   display the remote gem servers
        platform        display the supported gem platforms
        <omitted>       display everything
  EOF
  args.gsub(/^\s+/, "")
end

#descriptionObject

:nodoc:



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
60
61
62
63
64
65
66
67
68
# File 'lib/rubygems/commands/environment_command.rb', line 23

def description # :nodoc:
  <<-EOF
The environment command lets you query rubygems for its configuration for
use in shell scripts or as a debugging aid.

The RubyGems environment can be controlled through command line arguments,
gemrc files, environment variables and built-in defaults.

Command line argument defaults and some RubyGems defaults can be set in a
~/.gemrc file for individual users and a gemrc in the SYSTEM CONFIGURATION
DIRECTORY for all users. These files are YAML files with the following YAML
keys:

:sources: A YAML array of remote gem repositories to install gems from
:verbose: Verbosity of the gem command. false, true, and :really are the
          levels
:update_sources: Enable/disable automatic updating of repository metadata
:backtrace: Print backtrace when RubyGems encounters an error
:gempath: The paths in which to look for gems
:disable_default_gem_server: Force specification of gem server host on push
<gem_command>: A string containing arguments for the specified gem command

Example:

:verbose: false
install: --no-wrappers
update: --no-wrappers
:disable_default_gem_server: true

RubyGems' default local repository can be overridden with the GEM_PATH and
GEM_HOME environment variables. GEM_HOME sets the default repository to
install into. GEM_PATH allows multiple local repositories to be searched for
gems.

If you are behind a proxy server, RubyGems uses the HTTP_PROXY,
HTTP_PROXY_USER and HTTP_PROXY_PASS environment variables to discover the
proxy server.

If you would like to push gems to a private gem server the RUBYGEMS_HOST
environment variable can be set to the URI for that server.

If you are packaging RubyGems all of RubyGems' defaults are in
lib/rubygems/defaults.rb.  You may override these in
lib/rubygems/defaults/operating_system.rb
  EOF
end

#executeObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/rubygems/commands/environment_command.rb', line 74

def execute
  out = String.new
  arg = options[:args][0]
  out <<
    case arg
    when /^version/ then
      Gem::VERSION
    when /^gemdir/, /^gemhome/, /^home/, /^GEM_HOME/ then
      Gem.dir
    when /^gempath/, /^path/, /^GEM_PATH/ then
      Gem.path.join(File::PATH_SEPARATOR)
    when /^user_gemdir/, /^user_gemhome/ then
      Gem.user_dir
    when /^remotesources/ then
      Gem.sources.to_a.join("\n")
    when /^platform/ then
      Gem.platforms.join(File::PATH_SEPARATOR)
    when nil then
      show_environment
    else
      raise Gem::CommandLineError, "Unknown environment option [#{arg}]"
    end
  say out
  true
end

#show_environmentObject

:nodoc:



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/rubygems/commands/environment_command.rb', line 106

def show_environment # :nodoc:
  out = "RubyGems Environment:\n".dup

  out << "  - RUBYGEMS VERSION: #{Gem::VERSION}\n"

  out << "  - RUBY VERSION: #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} patchlevel #{RUBY_PATCHLEVEL}) [#{RUBY_PLATFORM}]\n"

  out << "  - INSTALLATION DIRECTORY: #{Gem.dir}\n"

  out << "  - USER INSTALLATION DIRECTORY: #{Gem.user_dir}\n"

  out << "  - RUBYGEMS PREFIX: #{Gem.prefix}\n" unless Gem.prefix.nil?

  out << "  - RUBY EXECUTABLE: #{Gem.ruby}\n"

  out << "  - GIT EXECUTABLE: #{git_path}\n"

  out << "  - EXECUTABLE DIRECTORY: #{Gem.bindir}\n"

  out << "  - SPEC CACHE DIRECTORY: #{Gem.spec_cache_dir}\n"

  out << "  - SYSTEM CONFIGURATION DIRECTORY: #{Gem::ConfigFile::SYSTEM_CONFIG_PATH}\n"

  out << "  - RUBYGEMS PLATFORMS:\n"
  Gem.platforms.each do |platform|
    out << "     - #{platform}\n"
  end

  out << "  - GEM PATHS:\n"
  out << "     - #{Gem.dir}\n"

  gem_path = Gem.path.dup
  gem_path.delete Gem.dir
  add_path out, gem_path

  out << "  - GEM CONFIGURATION:\n"
  Gem.configuration.each do |name, value|
    value = value.gsub(/./, "*") if name == "gemcutter_key"
    out << "     - #{name.inspect} => #{value.inspect}\n"
  end

  out << "  - REMOTE SOURCES:\n"
  Gem.sources.each do |s|
    out << "     - #{s}\n"
  end

  out << "  - SHELL PATH:\n"

  shell_path = ENV["PATH"].split(File::PATH_SEPARATOR)
  add_path out, shell_path

  out
end

#usageObject

:nodoc:



70
71
72
# File 'lib/rubygems/commands/environment_command.rb', line 70

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