Module: HammerCLI::Subcommand::ClassMethods
- Defined in:
- lib/hammer_cli/subcommand.rb
Instance Method Summary collapse
- #lazy_subcommand(name, description, subcommand_class, path) ⇒ Object
- #lazy_subcommand!(name, description, subcommand_class, path) ⇒ Object
- #remove_subcommand(name) ⇒ Object
- #subcommand(name, description, subcommand_class = self, &block) ⇒ Object
- #subcommand!(name, description, subcommand_class = self, &block) ⇒ Object
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 |