module DTK::Client::CLI::Command::Mixin::Class

Public Instance Methods

command_def(opts = {}) click to toggle source
# File lib/cli/command/mixin.rb, line 57
def command_def(opts = {})
  command_name = command_name()
  mangled_method = mangled_method(command_name)
  subcommand_mangled_methods = all_subcommands.map { |subcommand_name| mangled_subcommand_method(subcommand_name) }

  block = proc do
    if context_attributes[:only_context_commands]
      subcommand_mangled_methods.each do |subcommand_mangled_method|
        instance_eval { send(subcommand_mangled_method, self) }
      end
    else
      desc opts[:desc] if opts[:desc]
      command command_name do |c|
        subcommand_mangled_methods.each do |subcommand_mangled_method|
          instance_eval { send(subcommand_mangled_method, c) }
        end
      end
    end
  end
  class_eval { define_method(mangled_method, &block) }
end
subcommand_def(subcommand_name, &block) click to toggle source
# File lib/cli/command/mixin.rb, line 79
def subcommand_def(subcommand_name, &block)
  mangled_subcommand_method = mangled_subcommand_method(subcommand_name)
  class_eval { define_method(mangled_subcommand_method, &block) }
end

Private Instance Methods

all_subcommands() click to toggle source
# File lib/cli/command/mixin.rb, line 90
def all_subcommands
  self::ALL_SUBCOMMANDS
end
command_name() click to toggle source
# File lib/cli/command/mixin.rb, line 94
def command_name
  self.to_s.split('::').last.downcase.to_sym
end
mangled_subcommand_method(subcommand_name) click to toggle source
# File lib/cli/command/mixin.rb, line 86
def mangled_subcommand_method(subcommand_name)
  "#{mangled_method(command_name)}__#{subcommand_name}".to_sym
end