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
hidden_command() click to toggle source

alias :command_name= :set_command_name

# File lib/morpheus/cli/cli_command.rb, line 2076
def hidden_command
  defined?(@hidden_command) && @hidden_command == true
end
hidden_subcommands() click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2080
def hidden_subcommands
  @hidden_subcommands ||= []
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_hidden(val=true) click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2071
def set_command_hidden(val=true)
  @hidden_command = 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
set_subcommands_hidden(*cmds) click to toggle source
# File lib/morpheus/cli/cli_command.rb, line 2084
def set_subcommands_hidden(*cmds)
  @hidden_subcommands ||= []
  cmds.flatten.each do |cmd|
    @hidden_subcommands << cmd.to_sym
  end
  @hidden_subcommands
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