module Morpheus::Cli::CliCommand::ClassMethods
Public Instance Methods
add_subcommand(cmd_name, method)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2193 def add_subcommand(cmd_name, method) @subcommands ||= {} @subcommands[cmd_name.to_s] = method end
add_subcommand_alias(alias_cmd_name, cmd_name)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2213 def add_subcommand_alias(alias_cmd_name, cmd_name) @subcommand_aliases ||= {} @subcommand_aliases[alias_cmd_name.to_s] = cmd_name end
add_subcommand_description(cmd_name, description)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2227 def add_subcommand_description(cmd_name, description) @subcommand_descriptions ||= {} @subcommand_descriptions[cmd_name.to_s.gsub('_', '-')] = description end
alias_subcommand(alias_cmd_name, cmd_name)
click to toggle source
register an alias for a command
# File lib/morpheus/cli/cli_command.rb, line 2204 def alias_subcommand(alias_cmd_name, cmd_name) add_subcommand_alias(alias_cmd_name.to_s, cmd_name.to_s.gsub('_', '-')) return end
command_description()
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2092 def command_description @command_description ||= "" end
command_name()
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2066 def command_name @command_name ||= default_command_name @command_name end
default_command_name()
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2060 def default_command_name class_name = self.name.split('::')[-1] #class_name.sub!(/Command$/, '') Morpheus::Cli::CliRegistry.cli_ize(class_name).to_sym end
default_refresh_interval()
click to toggle source
alias :command_description= :set_command_description
# File lib/morpheus/cli/cli_command.rb, line 2101 def default_refresh_interval @default_refresh_interval ||= 30 end
default_subcommand()
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2172 def default_subcommand @default_subcommand end
get_subcommand_description(cmd_name)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2232 def get_subcommand_description(cmd_name) desc = subcommand_descriptions[cmd_name.to_s.gsub('_', '-')] if desc return desc else cmd_method = subcommands.key(cmd_name) return cmd_method ? subcommand_descriptions[cmd_method.to_s.gsub('_', '-')] : nil end end
has_subcommand?(cmd_name)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2188 def has_subcommand?(cmd_name) return false if cmd_name.empty? @subcommands && @subcommands[cmd_name.to_s] end
prog_name()
click to toggle source
attr_writer :command_name, :command_description, :hidden_command, :default_refresh_interval,
:subcommands, :hidden_subcommands, :default_subcommand, :subcommand_aliases, :subcommand_descriptions
# File lib/morpheus/cli/cli_command.rb, line 2051 def prog_name "morpheus" end
register_subcommand(*args)
click to toggle source
this might be the new hotness register_subcommand
(:show) # do not do this, always define a description! register_subcommand
(:list, “List things”) register_subcommand
(“update-all”, “update_all”, “Update all things”) If the command name =~ method, no need to pass both command names will have “-” swapped in for “_” and vice versa for method names.
# File lib/morpheus/cli/cli_command.rb, line 2140 def register_subcommand(*args) args = args.flatten cmd_name = args[0] cmd_method = nil cmd_desc = nil if args.count == 1 cmd_method = cmd_name elsif args.count == 2 if args[1].is_a?(Symbol) cmd_method = args[1] else cmd_method = cmd_name cmd_desc = args[1] end elsif args.count == 3 cmd_method = args[1] cmd_desc = args[2] else raise Morpheus::Cli::CliRegistry::BadCommandDefinition.new("register_subcommand expects 1-3 arguments, got #{args.size} #{args.inspect}") end cmd_name = cmd_name.to_s.gsub("_", "-").to_sym cmd_method = (cmd_method || cmd_name).to_s.gsub("-", "_").to_sym cmd_definition = {(cmd_name) => cmd_method} register_subcommands(cmd_definition) add_subcommand_description(cmd_name, cmd_desc) return end
register_subcommands(*cmds)
click to toggle source
construct map of command name => instance method
# File lib/morpheus/cli/cli_command.rb, line 2112 def register_subcommands(*cmds) @subcommands ||= {} cmds.flatten.each {|cmd| if cmd.is_a?(Hash) cmd.each {|k,v| # @subcommands[k] = v add_subcommand(k.to_s, v.to_s) } elsif cmd.is_a?(Array) cmd.each {|it| register_subcommands(it) } elsif cmd.is_a?(String) || cmd.is_a?(Symbol) #k = Morpheus::Cli::CliRegistry.cli_ize(cmd) k = cmd.to_s.gsub('_', '-') v = cmd.to_s.gsub('-', '_') register_subcommands({(k) => v}) else raise Morpheus::Cli::CliRegistry::BadCommandDefinition.new("Unable to register command of type: #{cmd.class} #{cmd}") end } return end
remove_subcommand(cmd_name)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2198 def remove_subcommand(cmd_name) @subcommands ||= {} @subcommands.delete(cmd_name.to_s) end
remove_subcommand_alias(alias_cmd_name)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2218 def remove_subcommand_alias(alias_cmd_name) @subcommand_aliases ||= {} @subcommand_aliases.delete(alias_cmd_name.to_s) end
set_command_description(val)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2096 def set_command_description(val) @command_description = val end
set_command_name(cmd_name)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2055 def set_command_name(cmd_name) @command_name = cmd_name.to_sym Morpheus::Cli::CliRegistry.add(self, self.command_name) end
set_default_refresh_interval(seconds)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2105 def set_default_refresh_interval(seconds) @default_refresh_interval = seconds end
set_default_subcommand(cmd)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2168 def set_default_subcommand(cmd) @default_subcommand = cmd end
set_subcommand_descriptions(cmd_map)
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2242 def set_subcommand_descriptions(cmd_map) cmd_map.each do |cmd_name, description| add_subcommand_description(cmd_name, description) end end
subcommand_aliases()
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2209 def subcommand_aliases @subcommand_aliases ||= {} end
subcommand_descriptions()
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2223 def subcommand_descriptions @subcommand_descriptions ||= {} end
subcommands()
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2176 def subcommands @subcommands ||= {} end
visible_subcommands()
click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2180 def visible_subcommands cmds = subcommands.clone hidden_subcommands.each do |hidden_cmd| cmds.delete(hidden_cmd.to_s.gsub('_', '-')) end cmds end