# File lib/pebbles/command/help.rb, line 50 def primary_namespaces PRIMARY_NAMESPACES.map { |name| namespaces[name] }.compact end
class Pebbles::Command::Help
list commands and display help
Constants
- PRIMARY_NAMESPACES
Public Instance Methods
index()
click to toggle source
# File lib/pebbles/command/help.rb, line 9 def index if command = args.shift help_for_command(command) else help_for_root end end
Private Instance Methods
additional_namespaces()
click to toggle source
# File lib/pebbles/command/help.rb, line 54 def additional_namespaces (namespaces.values - primary_namespaces) end
commands()
click to toggle source
# File lib/pebbles/command/help.rb, line 34 def commands Pebbles::Command.commands end
commands_for_namespace(name)
click to toggle source
# File lib/pebbles/command/help.rb, line 22 def commands_for_namespace(name) Pebbles::Command.commands.values.select do |command| command[:namespace] == name && command[:command] != name end end
help_for_command(name)
click to toggle source
# File lib/pebbles/command/help.rb, line 94 def help_for_command(name) if command_alias = Pebbles::Command.command_aliases[name] display("Alias: #{name} redirects to #{command_alias}") name = command_alias end if command = commands[name] puts "Usage: pebbles #{command[:banner]}" if command[:help].strip.length > 0 help = command[:help].split("\n").reject do |line| line =~ /HIDDEN/ end puts help[1..-1].join("\n") end puts end namespace_commands = commands_for_namespace(name).reject do |command| command[:help] =~ /DEPRECATED/ end if !namespace_commands.empty? puts "Additional commands, type \"pebbles help COMMAND\" for more details:" puts help_for_namespace(name) puts elsif command.nil? error "#{name} is not a pebbles command. See `pebbles help`." end end
help_for_namespace(name)
click to toggle source
# File lib/pebbles/command/help.rb, line 81 def help_for_namespace(name) namespace_commands = commands_for_namespace(name) unless namespace_commands.empty? size = longest(namespace_commands.map { |c| c[:banner] }) namespace_commands.sort_by { |c| c[:banner].to_s }.each do |command| next if skip_command?(command) command[:summary] puts " %-#{size}s # %s" % [ command[:banner], command[:summary] ] end end end
help_for_root()
click to toggle source
# File lib/pebbles/command/help.rb, line 68 def help_for_root puts "Usage: pebbles COMMAND [--app APP] [command-specific-options]" puts puts "Primary help topics, type \"pebbles help TOPIC\" for more details:" puts summary_for_namespaces(primary_namespaces) puts puts "Additional topics:" puts summary_for_namespaces(additional_namespaces) puts end
namespaces()
click to toggle source
# File lib/pebbles/command/help.rb, line 28 def namespaces namespaces = Pebbles::Command.namespaces namespaces.delete("app") namespaces end
primary_namespaces()
click to toggle source
skip_command?(command)
click to toggle source
# File lib/pebbles/command/help.rb, line 44 def skip_command?(command) return true if command[:help] =~ /DEPRECATED:/ return true if command[:help] =~ /^ HIDDEN:/ false end
skip_namespace?(ns)
click to toggle source
# File lib/pebbles/command/help.rb, line 38 def skip_namespace?(ns) return true if ns[:description] =~ /DEPRECATED:/ return true if ns[:description] =~ /HIDDEN:/ false end
summary_for_namespaces(namespaces)
click to toggle source
# File lib/pebbles/command/help.rb, line 58 def summary_for_namespaces(namespaces) size = longest(namespaces.map { |n| n[:name] }) namespaces.sort_by {|namespace| namespace[:name]}.each do |namespace| next if skip_namespace?(namespace) name = namespace[:name] namespace[:description] puts " %-#{size}s # %s" % [ name, namespace[:description] ] end end