Module: Morpheus::Cli::CliCommand::ClassMethods
- Defined in:
- lib/morpheus/cli/cli_command.rb
Instance Method Summary collapse
- #add_subcommand(cmd_name, method) ⇒ Object
- #add_subcommand_alias(alias_cmd_name, cmd_name) ⇒ Object
- #add_subcommand_description(cmd_name, description) ⇒ Object
-
#alias_subcommand(alias_cmd_name, cmd_name) ⇒ Object
register an alias for a command.
- #command_description ⇒ Object
- #command_name ⇒ Object
- #default_command_name ⇒ Object
-
#default_refresh_interval ⇒ Object
alias :command_description= :set_command_description.
- #default_subcommand ⇒ Object
- #get_subcommand_description(cmd_name) ⇒ Object
- #has_subcommand?(cmd_name) ⇒ Boolean
-
#hidden_command ⇒ Object
alias :command_name= :set_command_name.
- #hidden_subcommands ⇒ Object
-
#prog_name ⇒ Object
attr_writer :command_name, :command_description, :hidden_command, :default_refresh_interval, :subcommands, :hidden_subcommands, :default_subcommand, :subcommand_aliases, :subcommand_descriptions.
-
#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.
-
#register_subcommands(*cmds) ⇒ Object
construct map of command name => instance method.
- #remove_subcommand(cmd_name) ⇒ Object
- #remove_subcommand_alias(alias_cmd_name) ⇒ Object
- #set_command_description(val) ⇒ Object
- #set_command_hidden(val = true) ⇒ Object
- #set_command_name(cmd_name) ⇒ Object
- #set_default_refresh_interval(seconds) ⇒ Object
- #set_default_subcommand(cmd) ⇒ Object
- #set_subcommand_descriptions(cmd_map) ⇒ Object
- #set_subcommands_hidden(*cmds) ⇒ Object
- #subcommand_aliases ⇒ Object
- #subcommand_descriptions ⇒ Object
- #subcommands ⇒ Object
- #visible_subcommands ⇒ Object
Instance Method Details
#add_subcommand(cmd_name, method) ⇒ Object
2213 2214 2215 2216 |
# File 'lib/morpheus/cli/cli_command.rb', line 2213 def add_subcommand(cmd_name, method) @subcommands ||= {} @subcommands[cmd_name.to_s] = method end |
#add_subcommand_alias(alias_cmd_name, cmd_name) ⇒ Object
2233 2234 2235 2236 |
# File 'lib/morpheus/cli/cli_command.rb', line 2233 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
2247 2248 2249 2250 |
# File 'lib/morpheus/cli/cli_command.rb', line 2247 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
2224 2225 2226 2227 |
# File 'lib/morpheus/cli/cli_command.rb', line 2224 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 ⇒ Object
2112 2113 2114 |
# File 'lib/morpheus/cli/cli_command.rb', line 2112 def command_description @command_description ||= "" end |
#command_name ⇒ Object
2086 2087 2088 2089 |
# File 'lib/morpheus/cli/cli_command.rb', line 2086 def command_name @command_name ||= default_command_name @command_name end |
#default_command_name ⇒ Object
2080 2081 2082 2083 2084 |
# File 'lib/morpheus/cli/cli_command.rb', line 2080 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 ⇒ Object
alias :command_description= :set_command_description
2121 2122 2123 |
# File 'lib/morpheus/cli/cli_command.rb', line 2121 def default_refresh_interval @default_refresh_interval ||= 30 end |
#default_subcommand ⇒ Object
2192 2193 2194 |
# File 'lib/morpheus/cli/cli_command.rb', line 2192 def default_subcommand @default_subcommand end |
#get_subcommand_description(cmd_name) ⇒ Object
2252 2253 2254 2255 2256 2257 2258 2259 2260 |
# File 'lib/morpheus/cli/cli_command.rb', line 2252 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
2208 2209 2210 2211 |
# File 'lib/morpheus/cli/cli_command.rb', line 2208 def has_subcommand?(cmd_name) return false if cmd_name.empty? @subcommands && @subcommands[cmd_name.to_s] end |
#hidden_command ⇒ Object
alias :command_name= :set_command_name
2096 2097 2098 |
# File 'lib/morpheus/cli/cli_command.rb', line 2096 def hidden_command defined?(@hidden_command) && @hidden_command == true end |
#hidden_subcommands ⇒ Object
2100 2101 2102 |
# File 'lib/morpheus/cli/cli_command.rb', line 2100 def hidden_subcommands @hidden_subcommands ||= [] end |
#prog_name ⇒ Object
attr_writer :command_name, :command_description, :hidden_command, :default_refresh_interval,
:subcommands, :hidden_subcommands, :default_subcommand, :subcommand_aliases, :subcommand_descriptions
2071 2072 2073 |
# File 'lib/morpheus/cli/cli_command.rb', line 2071 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.
2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 |
# File 'lib/morpheus/cli/cli_command.rb', line 2160 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
2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 |
# File 'lib/morpheus/cli/cli_command.rb', line 2132 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
2218 2219 2220 2221 |
# File 'lib/morpheus/cli/cli_command.rb', line 2218 def remove_subcommand(cmd_name) @subcommands ||= {} @subcommands.delete(cmd_name.to_s) end |
#remove_subcommand_alias(alias_cmd_name) ⇒ Object
2238 2239 2240 2241 |
# File 'lib/morpheus/cli/cli_command.rb', line 2238 def remove_subcommand_alias(alias_cmd_name) @subcommand_aliases ||= {} @subcommand_aliases.delete(alias_cmd_name.to_s) end |
#set_command_description(val) ⇒ Object
2116 2117 2118 |
# File 'lib/morpheus/cli/cli_command.rb', line 2116 def set_command_description(val) @command_description = val end |
#set_command_hidden(val = true) ⇒ Object
2091 2092 2093 |
# File 'lib/morpheus/cli/cli_command.rb', line 2091 def set_command_hidden(val=true) @hidden_command = val end |
#set_command_name(cmd_name) ⇒ Object
2075 2076 2077 2078 |
# File 'lib/morpheus/cli/cli_command.rb', line 2075 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
2125 2126 2127 |
# File 'lib/morpheus/cli/cli_command.rb', line 2125 def set_default_refresh_interval(seconds) @default_refresh_interval = seconds end |
#set_default_subcommand(cmd) ⇒ Object
2188 2189 2190 |
# File 'lib/morpheus/cli/cli_command.rb', line 2188 def set_default_subcommand(cmd) @default_subcommand = cmd end |
#set_subcommand_descriptions(cmd_map) ⇒ Object
2262 2263 2264 2265 2266 |
# File 'lib/morpheus/cli/cli_command.rb', line 2262 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
2104 2105 2106 2107 2108 2109 2110 |
# File 'lib/morpheus/cli/cli_command.rb', line 2104 def set_subcommands_hidden(*cmds) @hidden_subcommands ||= [] cmds.flatten.each do |cmd| @hidden_subcommands << cmd.to_sym end @hidden_subcommands end |
#subcommand_aliases ⇒ Object
2229 2230 2231 |
# File 'lib/morpheus/cli/cli_command.rb', line 2229 def subcommand_aliases @subcommand_aliases ||= {} end |
#subcommand_descriptions ⇒ Object
2243 2244 2245 |
# File 'lib/morpheus/cli/cli_command.rb', line 2243 def subcommand_descriptions @subcommand_descriptions ||= {} end |
#subcommands ⇒ Object
2196 2197 2198 |
# File 'lib/morpheus/cli/cli_command.rb', line 2196 def subcommands @subcommands ||= {} end |
#visible_subcommands ⇒ Object
2200 2201 2202 2203 2204 2205 2206 |
# File 'lib/morpheus/cli/cli_command.rb', line 2200 def visible_subcommands cmds = subcommands.clone hidden_subcommands.each do |hidden_cmd| cmds.delete(hidden_cmd.to_s.gsub('_', '-')) end cmds end |