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
2190 2191 2192 2193 |
# File 'lib/morpheus/cli/cli_command.rb', line 2190 def add_subcommand(cmd_name, method) @subcommands ||= {} @subcommands[cmd_name.to_s] = method end |
#add_subcommand_alias(alias_cmd_name, cmd_name) ⇒ Object
2210 2211 2212 2213 |
# File 'lib/morpheus/cli/cli_command.rb', line 2210 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
2224 2225 2226 2227 |
# File 'lib/morpheus/cli/cli_command.rb', line 2224 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
2201 2202 2203 2204 |
# File 'lib/morpheus/cli/cli_command.rb', line 2201 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
2089 2090 2091 |
# File 'lib/morpheus/cli/cli_command.rb', line 2089 def command_description @command_description ||= "" end |
#command_name ⇒ Object
2063 2064 2065 2066 |
# File 'lib/morpheus/cli/cli_command.rb', line 2063 def command_name @command_name ||= default_command_name @command_name end |
#default_command_name ⇒ Object
2057 2058 2059 2060 2061 |
# File 'lib/morpheus/cli/cli_command.rb', line 2057 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
2098 2099 2100 |
# File 'lib/morpheus/cli/cli_command.rb', line 2098 def default_refresh_interval @default_refresh_interval ||= 30 end |
#default_subcommand ⇒ Object
2169 2170 2171 |
# File 'lib/morpheus/cli/cli_command.rb', line 2169 def default_subcommand @default_subcommand end |
#get_subcommand_description(cmd_name) ⇒ Object
2229 2230 2231 2232 2233 2234 2235 2236 2237 |
# File 'lib/morpheus/cli/cli_command.rb', line 2229 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
2185 2186 2187 2188 |
# File 'lib/morpheus/cli/cli_command.rb', line 2185 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
2073 2074 2075 |
# File 'lib/morpheus/cli/cli_command.rb', line 2073 def hidden_command defined?(@hidden_command) && @hidden_command == true end |
#hidden_subcommands ⇒ Object
2077 2078 2079 |
# File 'lib/morpheus/cli/cli_command.rb', line 2077 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
2048 2049 2050 |
# File 'lib/morpheus/cli/cli_command.rb', line 2048 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.
2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 |
# File 'lib/morpheus/cli/cli_command.rb', line 2137 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
2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 |
# File 'lib/morpheus/cli/cli_command.rb', line 2109 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
2195 2196 2197 2198 |
# File 'lib/morpheus/cli/cli_command.rb', line 2195 def remove_subcommand(cmd_name) @subcommands ||= {} @subcommands.delete(cmd_name.to_s) end |
#remove_subcommand_alias(alias_cmd_name) ⇒ Object
2215 2216 2217 2218 |
# File 'lib/morpheus/cli/cli_command.rb', line 2215 def remove_subcommand_alias(alias_cmd_name) @subcommand_aliases ||= {} @subcommand_aliases.delete(alias_cmd_name.to_s) end |
#set_command_description(val) ⇒ Object
2093 2094 2095 |
# File 'lib/morpheus/cli/cli_command.rb', line 2093 def set_command_description(val) @command_description = val end |
#set_command_hidden(val = true) ⇒ Object
2068 2069 2070 |
# File 'lib/morpheus/cli/cli_command.rb', line 2068 def set_command_hidden(val=true) @hidden_command = val end |
#set_command_name(cmd_name) ⇒ Object
2052 2053 2054 2055 |
# File 'lib/morpheus/cli/cli_command.rb', line 2052 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
2102 2103 2104 |
# File 'lib/morpheus/cli/cli_command.rb', line 2102 def set_default_refresh_interval(seconds) @default_refresh_interval = seconds end |
#set_default_subcommand(cmd) ⇒ Object
2165 2166 2167 |
# File 'lib/morpheus/cli/cli_command.rb', line 2165 def set_default_subcommand(cmd) @default_subcommand = cmd end |
#set_subcommand_descriptions(cmd_map) ⇒ Object
2239 2240 2241 2242 2243 |
# File 'lib/morpheus/cli/cli_command.rb', line 2239 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
2081 2082 2083 2084 2085 2086 2087 |
# File 'lib/morpheus/cli/cli_command.rb', line 2081 def set_subcommands_hidden(*cmds) @hidden_subcommands ||= [] cmds.flatten.each do |cmd| @hidden_subcommands << cmd.to_sym end @hidden_subcommands end |
#subcommand_aliases ⇒ Object
2206 2207 2208 |
# File 'lib/morpheus/cli/cli_command.rb', line 2206 def subcommand_aliases @subcommand_aliases ||= {} end |
#subcommand_descriptions ⇒ Object
2220 2221 2222 |
# File 'lib/morpheus/cli/cli_command.rb', line 2220 def subcommand_descriptions @subcommand_descriptions ||= {} end |
#subcommands ⇒ Object
2173 2174 2175 |
# File 'lib/morpheus/cli/cli_command.rb', line 2173 def subcommands @subcommands ||= {} end |
#visible_subcommands ⇒ Object
2177 2178 2179 2180 2181 2182 2183 |
# File 'lib/morpheus/cli/cli_command.rb', line 2177 def visible_subcommands cmds = subcommands.clone hidden_subcommands.each do |hidden_cmd| cmds.delete(hidden_cmd.to_s.gsub('_', '-')) end cmds end |