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
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_description ⇒ Object
2107 2108 2109 |
# File 'lib/morpheus/cli/cli_command.rb', line 2107 def command_description @command_description ||= "" end |
#command_name ⇒ Object
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_name ⇒ Object
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_interval ⇒ Object
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_subcommand ⇒ Object
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
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_command ⇒ Object
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_subcommands ⇒ Object
2095 2096 2097 |
# File 'lib/morpheus/cli/cli_command.rb', line 2095 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
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_aliases ⇒ Object
2224 2225 2226 |
# File 'lib/morpheus/cli/cli_command.rb', line 2224 def subcommand_aliases @subcommand_aliases ||= {} end |
#subcommand_descriptions ⇒ Object
2238 2239 2240 |
# File 'lib/morpheus/cli/cli_command.rb', line 2238 def subcommand_descriptions @subcommand_descriptions ||= {} end |
#subcommands ⇒ Object
2191 2192 2193 |
# File 'lib/morpheus/cli/cli_command.rb', line 2191 def subcommands @subcommands ||= {} end |
#visible_subcommands ⇒ Object
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 |