123456789_123456789_123456789_123456789_123456789_

Class: Gem::Commands::EnvironmentCommand

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: Gem::Command
Defined in: lib/rubygems/commands/environment_command.rb

Constant Summary

::Gem::Command - Inherited

HELP

Class Attribute Summary

::Gem::Command - Inherited

.build_args

Arguments used when building gems.

.build_args=, .extra_args, .extra_args=

Class Method Summary

::Gem::Command - Inherited

.add_common_option,
.add_specific_extra_args

Add a list of extra arguments for the given command.

.common_options,
.new

Initializes a generic gem command named command.

.specific_extra_args

Return an array of extra arguments for the command.

.specific_extra_args_hash

Accessor for the specific extra args hash (self initializing).

Instance Attribute Summary

::Gem::Command - Inherited

#command

The name of the command.

#defaults

The default options for the command.

#deprecated?,
#options

The options for the command.

#program_name

The name of the command for command-line invocation.

#summary

A short description of the command.

::Gem::DefaultUserInteraction - Included

Instance Method Summary

::Gem::Command - Inherited

#add_extra_args

Adds extra args from ~/.gemrc.

#add_option

Add a command-line option and handler to the command.

#arguments

Override to provide details of the arguments a command takes.

#begins?

True if long begins with the characters from short.

#check_deprecated_options,
#defaults_str

Override to display the default values of the command options.

#deprecate_option

Mark a command-line option as deprecated, and optionally specify a deprecation horizon.

#description

Override to display a longer description of what this command does.

#execute

Override to provide command handling.

#get_all_gem_names

Get all gem names from the command line.

#get_all_gem_names_and_versions

Get all [gem, version] from the command line.

#get_one_gem_name

Get a single gem name from the command line.

#get_one_optional_argument

Get a single optional argument from the command line.

#handle_options

Handle the given list of arguments by parsing them and recording the results.

#handles?

True if the command handles the given argument list.

#invoke

Invoke the command with the given list of arguments.

#invoke_with_build_args

Invoke the command with the given list of normal arguments and additional build arguments.

#merge_options

Merge a set of command options with the set of default options (without modifying the default option hash).

#remove_option

Remove previously defined command-line argument name.

#show_help

Display the help message for the command.

#show_lookup_failure

Display to the user that a gem couldn’t be found and reasons why –.

#usage

Override to display the usage for an individual gem command.

#when_invoked

Call the given block when invoked.

#add_parser_run_info

Adds a section with title and content to the parser help view.

#configure_options,
#create_option_parser

Creates an option parser and fills it in with the help info for the command.

#option_is_deprecated?,
#parser

Create on demand parser.

#wrap

Wraps text to width

#add_parser_description, #add_parser_options, #add_parser_summary

::Gem::UserInteraction - Included

#alert

Displays an alert statement.

#alert_error

Displays an error statement to the error output location.

#alert_warning

Displays a warning statement to the warning output location.

#ask

Asks a question and returns the answer.

#ask_for_password

Asks for a password with a prompt

#ask_yes_no

Asks a yes or no question.

#choose_from_list

Asks the user to answer question with an answer from the given list.

#say

Displays the given statement on the standard output (or equivalent).

#terminate_interaction

Terminates the RubyGems process with the given exit_code

#verbose

Calls say with msg or the results of the block if really_verbose is true.

::Gem::DefaultUserInteraction - Included

::Gem::Text - Included

#clean_text

Remove any non-printable characters and make the text suitable for printing.

#format_text

Wraps text to wrap characters and optionally indents by indent characters.

#levenshtein_distance

This code is based directly on the ::Gem::Text gem implementation Returns a value representing the “cost” of transforming str1 into str2.

#truncate_text, #min3

Constructor Details

.newEnvironmentCommand

[ GitHub ]

  
# File 'lib/rubygems/commands/environment_command.rb', line 5

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

Instance Method Details

#add_path(out, path)

[ GitHub ]

  
# File 'lib/rubygems/commands/environment_command.rb', line 96

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

#arguments

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rubygems/commands/environment_command.rb', line 9

def arguments # :nodoc:
  args = <<-EOF
        gemdir          display the path where gems are installed
        gempath         display path used to search for gems
        version         display the gem format version
        remotesources   display the remote gem servers
        platform        display the supported gem platforms
        <omitted>       display everything
  EOF
  return args.gsub(/^\s+/, '')
end

#description

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rubygems/commands/environment_command.rb', line 21

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

#execute

[ GitHub ]

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

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 /^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

#git_path (private)

Git binary path

[ GitHub ]

  
# File 'lib/rubygems/commands/environment_command.rb', line 163

def git_path
  exts = ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") : [""]
  ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
    exts.each do |ext|
      exe = File.join(path, "git#{ext}")
      return exe if File.executable?(exe) && !File.directory?(exe)
    end
  end

  return nil
end

#show_environment

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rubygems/commands/environment_command.rb', line 102

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

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

  out << "  - RUBY VERSION: #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}"
  out << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
  out << ") [#{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

#usage

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rubygems/commands/environment_command.rb', line 68

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