def usage(command=nil)
message = []
if command then
command_klass = @commands[command][:class]
help =
if command_klass.respond_to?(:aliases) then
"#{command} (#{command_klass.aliases.join(", ")})"
else
"#{command}"
end
help = "#{help}: #{command_klass.help}" if command_klass.respond_to?(:help)
message << help
message << command_klass.detailed_help if command_klass.respond_to?(:detailed_help)
message << ""
message << "Valid options:"
@option_parser.summarize(message)
else
message << "usage: #{program_name.downcase} <SUBCOMMAND> [OPTIONS] [ARGS...]"
message << "Type '#{program_name.downcase} help <SUBCOMMAND>' for help on a specific subcommand."
message << "Type '#{program_name.downcase} version' to get this program's version."
message << ""
message << "Available subcommands are:"
@commands.sort.each do |command, options|
command_klass = options[:class]
if command_klass.respond_to?(:aliases) then
message << " #{command} (#{command_klass.aliases.join(", ")})"
else
message << " #{command}"
end
end
end
message.map {|line| line.chomp}.join("\n")
end