module HammerCLI::Subcommand::ClassMethods

Public Instance Methods

define_subcommand(name, subcommand_class, definition, &block) click to toggle source
# File lib/hammer_cli/subcommand.rb, line 91
def define_subcommand(name, subcommand_class, definition, &block)
  existing = find_subcommand(name)
  if existing
    raise HammerCLI::CommandConflict, _("Can't replace subcommand %<name>s (%<existing_class>s) with %<name>s (%<new_class>s).") % {
      :name => name,
      :existing_class => existing.subcommand_class,
      :new_class => subcommand_class
    }
  end
  subcommand_class = Class.new(subcommand_class, &block) if block
  declare_subcommand_parameters unless has_subcommands?
  recognised_subcommands << definition
end
lazy_subcommand(name, description, subcommand_class_name, path, options = {}) click to toggle source
# File lib/hammer_cli/subcommand.rb, line 80
def lazy_subcommand(name, description, subcommand_class_name, path, options = {})
  definition = LazyDefinition.new(name, description, subcommand_class_name, path, options)
  define_subcommand(name, Class, definition)
end
lazy_subcommand!(name, description, subcommand_class_name, path, options = {}) click to toggle source
# File lib/hammer_cli/subcommand.rb, line 85
def lazy_subcommand!(name, description, subcommand_class_name, path, options = {})
  remove_subcommand(name)
  self.lazy_subcommand(name, description, subcommand_class_name, path, options)
  logger.info "subcommand #{name} (#{subcommand_class_name}) was created."
end
remove_subcommand(name) click to toggle source
# File lib/hammer_cli/subcommand.rb, line 58
def remove_subcommand(name)
  self.recognised_subcommands.delete_if do |sc|
    if sc.is_called?(name)
      logger.info "subcommand #{name} (#{sc.subcommand_class}) was removed."
      true
    else
      false
    end
  end
end
subcommand(name, description, subcommand_class = self, options = {}, &block) click to toggle source
# File lib/hammer_cli/subcommand.rb, line 75
def subcommand(name, description, subcommand_class = self, options = {}, &block)
  definition = Definition.new(name, description, subcommand_class, options)
  define_subcommand(name, subcommand_class, definition, &block)
end
subcommand!(name, description, subcommand_class = self, options = {}, &block) click to toggle source
# File lib/hammer_cli/subcommand.rb, line 69
def subcommand!(name, description, subcommand_class = self, options = {}, &block)
  remove_subcommand(name)
  subcommand(name, description, subcommand_class, options, &block)
  logger.info "subcommand #{name} (#{subcommand_class}) was created."
end