Module: HammerCLI::Subcommand::ClassMethods

Defined in:
lib/hammer_cli/subcommand.rb

Instance Method Summary collapse

Instance Method Details

#lazy_subcommand(name, description, subcommand_class, path) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/hammer_cli/subcommand.rb', line 65

def lazy_subcommand(name, description, subcommand_class, path)
  # call original subcommand to ensure command's parameters are set correctly
  # (hammer command SUBCOMMAND [ARGS] ...)
  subcommand(name, description, Class)
  # replace last subcommand definition with correct lazy-loaded one
  recognised_subcommands[-1] = LazyDefinition.new(name, description, subcommand_class, path)
end

#lazy_subcommand!(name, description, subcommand_class, path) ⇒ Object



73
74
75
76
77
# File 'lib/hammer_cli/subcommand.rb', line 73

def lazy_subcommand!(name, description, subcommand_class, path)
  remove_subcommand(name)
  self.lazy_subcommand(name, description, subcommand_class, path)
  logger.info "subcommand #{name} (#{subcommand_class}) was created."
end

#remove_subcommand(name) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/hammer_cli/subcommand.rb', line 36

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, &block) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/hammer_cli/subcommand.rb', line 53

def subcommand(name, description, subcommand_class = self, &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
  super
end

#subcommand!(name, description, subcommand_class = self, &block) ⇒ Object



47
48
49
50
51
# File 'lib/hammer_cli/subcommand.rb', line 47

def subcommand!(name, description, subcommand_class = self, &block)
  remove_subcommand(name)
  subcommand(name, description, subcommand_class, &block)
  logger.info "subcommand #{name} (#{subcommand_class}) was created."
end