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.
- #prog_name ⇒ Object
-
#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
1896 1897 1898 1899 |
# File 'lib/morpheus/cli/cli_command.rb', line 1896 def add_subcommand(cmd_name, method) @subcommands ||= {} @subcommands[cmd_name.to_s] = method end |
#add_subcommand_alias(alias_cmd_name, cmd_name) ⇒ Object
1916 1917 1918 1919 |
# File 'lib/morpheus/cli/cli_command.rb', line 1916 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
1930 1931 1932 1933 |
# File 'lib/morpheus/cli/cli_command.rb', line 1930 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
1907 1908 1909 1910 |
# File 'lib/morpheus/cli/cli_command.rb', line 1907 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
1793 1794 1795 |
# File 'lib/morpheus/cli/cli_command.rb', line 1793 def command_description @command_description end |
#command_name ⇒ Object
1771 1772 1773 1774 |
# File 'lib/morpheus/cli/cli_command.rb', line 1771 def command_name @command_name ||= default_command_name @command_name end |
#default_command_name ⇒ Object
1765 1766 1767 1768 1769 |
# File 'lib/morpheus/cli/cli_command.rb', line 1765 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
1802 1803 1804 |
# File 'lib/morpheus/cli/cli_command.rb', line 1802 def default_refresh_interval @default_refresh_interval ||= 30 end |
#default_subcommand ⇒ Object
1873 1874 1875 |
# File 'lib/morpheus/cli/cli_command.rb', line 1873 def default_subcommand @default_subcommand end |
#get_subcommand_description(cmd_name) ⇒ Object
1935 1936 1937 1938 1939 1940 1941 1942 1943 |
# File 'lib/morpheus/cli/cli_command.rb', line 1935 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
1891 1892 1893 1894 |
# File 'lib/morpheus/cli/cli_command.rb', line 1891 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
1781 1782 1783 |
# File 'lib/morpheus/cli/cli_command.rb', line 1781 def hidden_command !!@hidden_command end |
#prog_name ⇒ Object
1756 1757 1758 |
# File 'lib/morpheus/cli/cli_command.rb', line 1756 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.
1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 |
# File 'lib/morpheus/cli/cli_command.rb', line 1841 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
1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 |
# File 'lib/morpheus/cli/cli_command.rb', line 1813 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
1901 1902 1903 1904 |
# File 'lib/morpheus/cli/cli_command.rb', line 1901 def remove_subcommand(cmd_name) @subcommands ||= {} @subcommands.delete(cmd_name.to_s) end |
#remove_subcommand_alias(alias_cmd_name) ⇒ Object
1921 1922 1923 1924 |
# File 'lib/morpheus/cli/cli_command.rb', line 1921 def remove_subcommand_alias(alias_cmd_name) @subcommand_aliases ||= {} @subcommand_aliases.delete(alias_cmd_name.to_s) end |
#set_command_description(val) ⇒ Object
1797 1798 1799 |
# File 'lib/morpheus/cli/cli_command.rb', line 1797 def set_command_description(val) @command_description = val end |
#set_command_hidden(val = true) ⇒ Object
1776 1777 1778 |
# File 'lib/morpheus/cli/cli_command.rb', line 1776 def set_command_hidden(val=true) @hidden_command = val end |
#set_command_name(cmd_name) ⇒ Object
1760 1761 1762 1763 |
# File 'lib/morpheus/cli/cli_command.rb', line 1760 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
1806 1807 1808 |
# File 'lib/morpheus/cli/cli_command.rb', line 1806 def set_default_refresh_interval(seconds) @default_refresh_interval = seconds end |
#set_default_subcommand(cmd) ⇒ Object
1869 1870 1871 |
# File 'lib/morpheus/cli/cli_command.rb', line 1869 def set_default_subcommand(cmd) @default_subcommand = cmd end |
#set_subcommand_descriptions(cmd_map) ⇒ Object
1945 1946 1947 1948 1949 |
# File 'lib/morpheus/cli/cli_command.rb', line 1945 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
1785 1786 1787 1788 1789 1790 1791 |
# File 'lib/morpheus/cli/cli_command.rb', line 1785 def set_subcommands_hidden(*cmds) @hidden_subcommands ||= [] cmds.flatten.each do |cmd| @hidden_subcommands << cmd.to_sym end @hidden_subcommands end |
#subcommand_aliases ⇒ Object
1912 1913 1914 |
# File 'lib/morpheus/cli/cli_command.rb', line 1912 def subcommand_aliases @subcommand_aliases ||= {} end |
#subcommand_descriptions ⇒ Object
1926 1927 1928 |
# File 'lib/morpheus/cli/cli_command.rb', line 1926 def subcommand_descriptions @subcommand_descriptions ||= {} end |
#subcommands ⇒ Object
1877 1878 1879 |
# File 'lib/morpheus/cli/cli_command.rb', line 1877 def subcommands @subcommands ||= {} end |
#visible_subcommands ⇒ Object
1881 1882 1883 1884 1885 1886 1887 1888 1889 |
# File 'lib/morpheus/cli/cli_command.rb', line 1881 def visible_subcommands cmds = subcommands.clone if @hidden_subcommands && !@hidden_subcommands.empty? @hidden_subcommands.each do |hidden_cmd| cmds.delete(hidden_cmd.to_s.gsub('_', '-')) end end cmds end |