class Gem::Commands::HelpCommand
Public Class Methods
new()
click to toggle source
Calls superclass method
Gem::Command.new
# File lib/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 lib/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| command = command_manager[cmd_name] summary = if command then command.summary else "[No command found for #{cmd_name}, bug?]" end 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