Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • rubygems/commands/help_command.rb

Parent

Methods

Class/Module Index [+]

Quicksearch

Gem::Commands::HelpCommand

Public Class Methods

new() click to toggle source
 
               # File rubygems/commands/help_command.rb, line 81
def initialize
  super 'help', "Provide help on the 'gem' command"
end
            

Public Instance Methods

execute() click to toggle source
 
               # File rubygems/commands/help_command.rb, line 98
def execute
  command_manager = Gem::CommandManager.instance
  arg = options[:args][0]

  if begins? "commands", arg then
    out = []
    out << "GEM commands are:"
    out << nil

    margin_width = 4

    desc_width = command_manager.command_names.map { |n| n.size }.max + 4

    summary_width = 80 - margin_width - desc_width
    wrap_indent = ' ' * (margin_width + desc_width)
    format = "#{' ' * margin_width}%-#{desc_width}s%s"

    command_manager.command_names.each do |cmd_name|
      summary = command_manager[cmd_name].summary
      summary = wrap(summary, summary_width).split "\n"
      out << sprintf(format, cmd_name, summary.shift)
      until summary.empty? do
        out << "#{wrap_indent}#{summary.shift}"
      end
    end

    out << nil
    out << "For help on a particular command, use 'gem help COMMAND'."
    out << nil
    out << "Commands may be abbreviated, so long as they are unambiguous."
    out << "e.g. 'gem i rake' is short for 'gem install rake'."

    say out.join("\n")

  elsif begins? "options", arg then
    say Gem::Command::HELP

  elsif begins? "examples", arg then
    say EXAMPLES

  elsif begins? "platforms", arg then
    say PLATFORMS

  elsif options[:help] then
    command = command_manager[options[:help]]
    if command
      # help with provided command
      command.invoke("--help")
    else
      alert_error "Unknown command #{options[:help]}.  Try 'gem help commands'"
    end

  elsif arg then
    possibilities = command_manager.find_command_possibilities(arg.downcase)
    if possibilities.size == 1
      command = command_manager[possibilities.first]
      command.invoke("--help")
    elsif possibilities.size > 1
      alert_warning "Ambiguous command #{arg} (#{possibilities.join(', ')})"
    else
      alert_warning "Unknown command #{arg}. Try gem help commands"
    end

  else
    say Gem::Command::HELP
  end
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.