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
1822 1823 1824 1825 |
# File 'lib/morpheus/cli/cli_command.rb', line 1822 def add_subcommand(cmd_name, method) @subcommands ||= {} @subcommands[cmd_name.to_s] = method end |
#add_subcommand_alias(alias_cmd_name, cmd_name) ⇒ Object
1842 1843 1844 1845 |
# File 'lib/morpheus/cli/cli_command.rb', line 1842 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
1856 1857 1858 1859 |
# File 'lib/morpheus/cli/cli_command.rb', line 1856 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
1833 1834 1835 1836 |
# File 'lib/morpheus/cli/cli_command.rb', line 1833 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
1719 1720 1721 |
# File 'lib/morpheus/cli/cli_command.rb', line 1719 def command_description @command_description end |
#command_name ⇒ Object
1697 1698 1699 1700 |
# File 'lib/morpheus/cli/cli_command.rb', line 1697 def command_name @command_name ||= default_command_name @command_name end |
#default_command_name ⇒ Object
1691 1692 1693 1694 1695 |
# File 'lib/morpheus/cli/cli_command.rb', line 1691 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
1728 1729 1730 |
# File 'lib/morpheus/cli/cli_command.rb', line 1728 def default_refresh_interval @default_refresh_interval ||= 30 end |
#default_subcommand ⇒ Object
1799 1800 1801 |
# File 'lib/morpheus/cli/cli_command.rb', line 1799 def default_subcommand @default_subcommand end |
#get_subcommand_description(cmd_name) ⇒ Object
1861 1862 1863 1864 1865 1866 1867 1868 1869 |
# File 'lib/morpheus/cli/cli_command.rb', line 1861 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
1817 1818 1819 1820 |
# File 'lib/morpheus/cli/cli_command.rb', line 1817 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
1707 1708 1709 |
# File 'lib/morpheus/cli/cli_command.rb', line 1707 def hidden_command !!@hidden_command end |
#prog_name ⇒ Object
1682 1683 1684 |
# File 'lib/morpheus/cli/cli_command.rb', line 1682 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.
1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 |
# File 'lib/morpheus/cli/cli_command.rb', line 1767 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
1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 |
# File 'lib/morpheus/cli/cli_command.rb', line 1739 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
1827 1828 1829 1830 |
# File 'lib/morpheus/cli/cli_command.rb', line 1827 def remove_subcommand(cmd_name) @subcommands ||= {} @subcommands.delete(cmd_name.to_s) end |
#remove_subcommand_alias(alias_cmd_name) ⇒ Object
1847 1848 1849 1850 |
# File 'lib/morpheus/cli/cli_command.rb', line 1847 def remove_subcommand_alias(alias_cmd_name) @subcommand_aliases ||= {} @subcommand_aliases.delete(alias_cmd_name.to_s) end |
#set_command_description(val) ⇒ Object
1723 1724 1725 |
# File 'lib/morpheus/cli/cli_command.rb', line 1723 def set_command_description(val) @command_description = val end |
#set_command_hidden(val = true) ⇒ Object
1702 1703 1704 |
# File 'lib/morpheus/cli/cli_command.rb', line 1702 def set_command_hidden(val=true) @hidden_command = val end |
#set_command_name(cmd_name) ⇒ Object
1686 1687 1688 1689 |
# File 'lib/morpheus/cli/cli_command.rb', line 1686 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
1732 1733 1734 |
# File 'lib/morpheus/cli/cli_command.rb', line 1732 def set_default_refresh_interval(seconds) @default_refresh_interval = seconds end |
#set_default_subcommand(cmd) ⇒ Object
1795 1796 1797 |
# File 'lib/morpheus/cli/cli_command.rb', line 1795 def set_default_subcommand(cmd) @default_subcommand = cmd end |
#set_subcommand_descriptions(cmd_map) ⇒ Object
1871 1872 1873 1874 1875 |
# File 'lib/morpheus/cli/cli_command.rb', line 1871 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
1711 1712 1713 1714 1715 1716 1717 |
# File 'lib/morpheus/cli/cli_command.rb', line 1711 def set_subcommands_hidden(*cmds) @hidden_subcommands ||= [] cmds.flatten.each do |cmd| @hidden_subcommands << cmd.to_sym end @hidden_subcommands end |
#subcommand_aliases ⇒ Object
1838 1839 1840 |
# File 'lib/morpheus/cli/cli_command.rb', line 1838 def subcommand_aliases @subcommand_aliases ||= {} end |
#subcommand_descriptions ⇒ Object
1852 1853 1854 |
# File 'lib/morpheus/cli/cli_command.rb', line 1852 def subcommand_descriptions @subcommand_descriptions ||= {} end |
#subcommands ⇒ Object
1803 1804 1805 |
# File 'lib/morpheus/cli/cli_command.rb', line 1803 def subcommands @subcommands ||= {} end |
#visible_subcommands ⇒ Object
1807 1808 1809 1810 1811 1812 1813 1814 1815 |
# File 'lib/morpheus/cli/cli_command.rb', line 1807 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 |