Module: Morpheus::Cli::CliCommand::ClassMethods

Defined in:
lib/morpheus/cli/cli_command.rb

Instance Method Summary collapse

Instance Method Details

#add_subcommand(cmd_name, method) ⇒ Object



2208
2209
2210
2211
# File 'lib/morpheus/cli/cli_command.rb', line 2208

def add_subcommand(cmd_name, method)
  @subcommands ||= {}
  @subcommands[cmd_name.to_s] = method
end

#add_subcommand_alias(alias_cmd_name, cmd_name) ⇒ Object



2228
2229
2230
2231
# File 'lib/morpheus/cli/cli_command.rb', line 2228

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) ⇒ Object



2242
2243
2244
2245
# File 'lib/morpheus/cli/cli_command.rb', line 2242

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) ⇒ Object

register an alias for a command



2219
2220
2221
2222
# File 'lib/morpheus/cli/cli_command.rb', line 2219

def alias_subcommand(alias_cmd_name, cmd_name)
  add_subcommand_alias(alias_cmd_name.to_s, cmd_name.to_s.gsub('_', '-'))
  return
end

#command_descriptionObject



2107
2108
2109
# File 'lib/morpheus/cli/cli_command.rb', line 2107

def command_description
  @command_description ||= ""
end

#command_nameObject



2081
2082
2083
2084
# File 'lib/morpheus/cli/cli_command.rb', line 2081

def command_name
  @command_name ||= default_command_name
  @command_name
end

#default_command_nameObject



2075
2076
2077
2078
2079
# File 'lib/morpheus/cli/cli_command.rb', line 2075

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_intervalObject

alias :command_description= :set_command_description



2116
2117
2118
# File 'lib/morpheus/cli/cli_command.rb', line 2116

def default_refresh_interval
  @default_refresh_interval ||= 30
end

#default_subcommandObject



2187
2188
2189
# File 'lib/morpheus/cli/cli_command.rb', line 2187

def default_subcommand
  @default_subcommand
end

#get_subcommand_description(cmd_name) ⇒ Object



2247
2248
2249
2250
2251
2252
2253
2254
2255
# File 'lib/morpheus/cli/cli_command.rb', line 2247

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) ⇒ Boolean

Returns:

  • (Boolean)


2203
2204
2205
2206
# File 'lib/morpheus/cli/cli_command.rb', line 2203

def has_subcommand?(cmd_name)
  return false if cmd_name.empty?
  @subcommands && @subcommands[cmd_name.to_s]
end

#hidden_commandObject

alias :command_name= :set_command_name



2091
2092
2093
# File 'lib/morpheus/cli/cli_command.rb', line 2091

def hidden_command
  defined?(@hidden_command) && @hidden_command == true
end

#hidden_subcommandsObject



2095
2096
2097
# File 'lib/morpheus/cli/cli_command.rb', line 2095

def hidden_subcommands
  @hidden_subcommands ||= []
end

#prog_nameObject

attr_writer :command_name, :command_description, :hidden_command, :default_refresh_interval,

:subcommands, :hidden_subcommands, :default_subcommand, :subcommand_aliases, :subcommand_descriptions


2066
2067
2068
# File 'lib/morpheus/cli/cli_command.rb', line 2066

def prog_name
  "morpheus"
end

#register_subcommand(*args) ⇒ Object

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.



2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
# File 'lib/morpheus/cli/cli_command.rb', line 2155

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) ⇒ Object

construct map of command name => instance method



2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
# File 'lib/morpheus/cli/cli_command.rb', line 2127

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) ⇒ Object



2213
2214
2215
2216
# File 'lib/morpheus/cli/cli_command.rb', line 2213

def remove_subcommand(cmd_name)
  @subcommands ||= {}
  @subcommands.delete(cmd_name.to_s)
end

#remove_subcommand_alias(alias_cmd_name) ⇒ Object



2233
2234
2235
2236
# File 'lib/morpheus/cli/cli_command.rb', line 2233

def remove_subcommand_alias(alias_cmd_name)
  @subcommand_aliases ||= {}
  @subcommand_aliases.delete(alias_cmd_name.to_s)
end

#set_command_description(val) ⇒ Object



2111
2112
2113
# File 'lib/morpheus/cli/cli_command.rb', line 2111

def set_command_description(val)
  @command_description = val
end

#set_command_hidden(val = true) ⇒ Object



2086
2087
2088
# File 'lib/morpheus/cli/cli_command.rb', line 2086

def set_command_hidden(val=true)
  @hidden_command = val
end

#set_command_name(cmd_name) ⇒ Object



2070
2071
2072
2073
# File 'lib/morpheus/cli/cli_command.rb', line 2070

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) ⇒ Object



2120
2121
2122
# File 'lib/morpheus/cli/cli_command.rb', line 2120

def set_default_refresh_interval(seconds)
  @default_refresh_interval = seconds
end

#set_default_subcommand(cmd) ⇒ Object



2183
2184
2185
# File 'lib/morpheus/cli/cli_command.rb', line 2183

def set_default_subcommand(cmd)
  @default_subcommand = cmd
end

#set_subcommand_descriptions(cmd_map) ⇒ Object



2257
2258
2259
2260
2261
# File 'lib/morpheus/cli/cli_command.rb', line 2257

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) ⇒ Object



2099
2100
2101
2102
2103
2104
2105
# File 'lib/morpheus/cli/cli_command.rb', line 2099

def set_subcommands_hidden(*cmds)
  @hidden_subcommands ||= []
  cmds.flatten.each do |cmd|
    @hidden_subcommands << cmd.to_sym
  end
  @hidden_subcommands
end

#subcommand_aliasesObject



2224
2225
2226
# File 'lib/morpheus/cli/cli_command.rb', line 2224

def subcommand_aliases
  @subcommand_aliases ||= {}
end

#subcommand_descriptionsObject



2238
2239
2240
# File 'lib/morpheus/cli/cli_command.rb', line 2238

def subcommand_descriptions
  @subcommand_descriptions ||= {}
end

#subcommandsObject



2191
2192
2193
# File 'lib/morpheus/cli/cli_command.rb', line 2191

def subcommands
  @subcommands ||= {}
end

#visible_subcommandsObject



2195
2196
2197
2198
2199
2200
2201
# File 'lib/morpheus/cli/cli_command.rb', line 2195

def visible_subcommands
  cmds = subcommands.clone
  hidden_subcommands.each do |hidden_cmd|
    cmds.delete(hidden_cmd.to_s.gsub('_', '-'))
  end
  cmds
end