# 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
# 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
# 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
# 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
# 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
# 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