Module: Morpheus::Cli::CliCommand::ClassMethods

Defined in:
lib/morpheus/cli/cli_command.rb

Instance Method Summary collapse

Instance Method Details

#add_subcommand(cmd_name, method) ⇒ Object



2057
2058
2059
2060
# File 'lib/morpheus/cli/cli_command.rb', line 2057

def add_subcommand(cmd_name, method)
  @subcommands ||= {}
  @subcommands[cmd_name.to_s] = method
end

#add_subcommand_alias(alias_cmd_name, cmd_name) ⇒ Object



2077
2078
2079
2080
# File 'lib/morpheus/cli/cli_command.rb', line 2077

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



2091
2092
2093
2094
# File 'lib/morpheus/cli/cli_command.rb', line 2091

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



2068
2069
2070
2071
# File 'lib/morpheus/cli/cli_command.rb', line 2068

def alias_subcommand(alias_cmd_name, cmd_name)
  add_subcommand_alias(alias_cmd_name.to_s, cmd_name.to_s.gsub('_', '-'))
  return
end

#command_descriptionObject



1956
1957
1958
# File 'lib/morpheus/cli/cli_command.rb', line 1956

def command_description
  @command_description ||= ""
end

#command_nameObject



1930
1931
1932
1933
# File 'lib/morpheus/cli/cli_command.rb', line 1930

def command_name
  @command_name ||= default_command_name
  @command_name
end

#default_command_nameObject



1924
1925
1926
1927
1928
# File 'lib/morpheus/cli/cli_command.rb', line 1924

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_intervalObject

alias :command_description= :set_command_description



1965
1966
1967
# File 'lib/morpheus/cli/cli_command.rb', line 1965

def default_refresh_interval
  @default_refresh_interval ||= 30
end

#default_subcommandObject



2036
2037
2038
# File 'lib/morpheus/cli/cli_command.rb', line 2036

def default_subcommand
  @default_subcommand
end

#get_subcommand_description(cmd_name) ⇒ Object



2096
2097
2098
2099
2100
2101
2102
2103
2104
# File 'lib/morpheus/cli/cli_command.rb', line 2096

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

Returns:

  • (Boolean)


2052
2053
2054
2055
# File 'lib/morpheus/cli/cli_command.rb', line 2052

def has_subcommand?(cmd_name)
  return false if cmd_name.empty?
  @subcommands && @subcommands[cmd_name.to_s]
end

#hidden_commandObject

alias :command_name= :set_command_name



1940
1941
1942
# File 'lib/morpheus/cli/cli_command.rb', line 1940

def hidden_command
  defined?(@hidden_command) && @hidden_command == true
end

#hidden_subcommandsObject



1944
1945
1946
# File 'lib/morpheus/cli/cli_command.rb', line 1944

def hidden_subcommands
  @hidden_subcommands ||= []
end

#prog_nameObject

attr_writer :command_name, :command_description, :hidden_command, :default_refresh_interval,

:subcommands, :hidden_subcommands, :default_subcommand, :subcommand_aliases, :subcommand_descriptions


1915
1916
1917
# File 'lib/morpheus/cli/cli_command.rb', line 1915

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.



2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
# File 'lib/morpheus/cli/cli_command.rb', line 2004

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



1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
# File 'lib/morpheus/cli/cli_command.rb', line 1976

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



2062
2063
2064
2065
# File 'lib/morpheus/cli/cli_command.rb', line 2062

def remove_subcommand(cmd_name)
  @subcommands ||= {}
  @subcommands.delete(cmd_name.to_s)
end

#remove_subcommand_alias(alias_cmd_name) ⇒ Object



2082
2083
2084
2085
# File 'lib/morpheus/cli/cli_command.rb', line 2082

def remove_subcommand_alias(alias_cmd_name)
  @subcommand_aliases ||= {}
  @subcommand_aliases.delete(alias_cmd_name.to_s)
end

#set_command_description(val) ⇒ Object



1960
1961
1962
# File 'lib/morpheus/cli/cli_command.rb', line 1960

def set_command_description(val)
  @command_description = val
end

#set_command_hidden(val = true) ⇒ Object



1935
1936
1937
# File 'lib/morpheus/cli/cli_command.rb', line 1935

def set_command_hidden(val=true)
  @hidden_command = val
end

#set_command_name(cmd_name) ⇒ Object



1919
1920
1921
1922
# File 'lib/morpheus/cli/cli_command.rb', line 1919

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



1969
1970
1971
# File 'lib/morpheus/cli/cli_command.rb', line 1969

def set_default_refresh_interval(seconds)
  @default_refresh_interval = seconds
end

#set_default_subcommand(cmd) ⇒ Object



2032
2033
2034
# File 'lib/morpheus/cli/cli_command.rb', line 2032

def set_default_subcommand(cmd)
  @default_subcommand = cmd
end

#set_subcommand_descriptions(cmd_map) ⇒ Object



2106
2107
2108
2109
2110
# File 'lib/morpheus/cli/cli_command.rb', line 2106

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



1948
1949
1950
1951
1952
1953
1954
# File 'lib/morpheus/cli/cli_command.rb', line 1948

def set_subcommands_hidden(*cmds)
  @hidden_subcommands ||= []
  cmds.flatten.each do |cmd|
    @hidden_subcommands << cmd.to_sym
  end
  @hidden_subcommands
end

#subcommand_aliasesObject



2073
2074
2075
# File 'lib/morpheus/cli/cli_command.rb', line 2073

def subcommand_aliases
  @subcommand_aliases ||= {}
end

#subcommand_descriptionsObject



2087
2088
2089
# File 'lib/morpheus/cli/cli_command.rb', line 2087

def subcommand_descriptions
  @subcommand_descriptions ||= {}
end

#subcommandsObject



2040
2041
2042
# File 'lib/morpheus/cli/cli_command.rb', line 2040

def subcommands
  @subcommands ||= {}
end

#visible_subcommandsObject



2044
2045
2046
2047
2048
2049
2050
# File 'lib/morpheus/cli/cli_command.rb', line 2044

def visible_subcommands
  cmds = subcommands.clone
  hidden_subcommands.each do |hidden_cmd|
    cmds.delete(hidden_cmd.to_s.gsub('_', '-'))
  end
  cmds
end