Module: HammerCLI::Subcommand::ClassMethods
- Defined in:
- lib/hammer_cli/subcommand.rb
Instance Method Summary collapse
- #define_subcommand(name, subcommand_class, definition, &block) ⇒ Object
- #find_subcommand(name, fuzzy: true) ⇒ Object
- #find_subcommand_starting_with(name) ⇒ Object
- #lazy_subcommand(name, description, subcommand_class_name, path, options = {}) ⇒ Object
- #lazy_subcommand!(name, description, subcommand_class_name, path, options = {}) ⇒ Object
- #remove_subcommand(name) ⇒ Object
- #subcommand(name, description, subcommand_class = self, options = {}, &block) ⇒ Object
- #subcommand!(name, description, subcommand_class = self, options = {}, &block) ⇒ Object
Instance Method Details
#define_subcommand(name, subcommand_class, definition, &block) ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/hammer_cli/subcommand.rb', line 118 def define_subcommand(name, subcommand_class, definition, &block) existing = find_subcommand(name, fuzzy: false) 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 |
#find_subcommand(name, fuzzy: true) ⇒ Object
99 100 101 102 103 104 105 106 |
# File 'lib/hammer_cli/subcommand.rb', line 99 def find_subcommand(name, fuzzy: true) subcommand = super(name) if subcommand.nil? && fuzzy find_subcommand_starting_with(name) else subcommand end end |
#find_subcommand_starting_with(name) ⇒ Object
108 109 110 111 112 113 114 115 116 |
# File 'lib/hammer_cli/subcommand.rb', line 108 def find_subcommand_starting_with(name) subcommands = recognised_subcommands.select { |sc| sc.names.any? { |n| n.start_with?(name) } } if subcommands.size > 1 raise HammerCLI::CommandConflict, _('Found more than one command.') + "\n\n" + _('Did you mean one of these?') + "\n\t" + subcommands.collect(&:names).flatten.select { |n| n.start_with?(name) }.join("\n\t") end subcommands.first end |
#lazy_subcommand(name, description, subcommand_class_name, path, options = {}) ⇒ Object
88 89 90 91 |
# File 'lib/hammer_cli/subcommand.rb', line 88 def lazy_subcommand(name, description, subcommand_class_name, path, = {}) definition = LazyDefinition.new(name, description, subcommand_class_name, path, ) define_subcommand(name, Class, definition) end |
#lazy_subcommand!(name, description, subcommand_class_name, path, options = {}) ⇒ Object
93 94 95 96 97 |
# File 'lib/hammer_cli/subcommand.rb', line 93 def lazy_subcommand!(name, description, subcommand_class_name, path, = {}) remove_subcommand(name) self.lazy_subcommand(name, description, subcommand_class_name, path, ) logger.info "subcommand #{name} (#{subcommand_class_name}) was created." end |
#remove_subcommand(name) ⇒ Object
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/hammer_cli/subcommand.rb', line 66 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) ⇒ Object
83 84 85 86 |
# File 'lib/hammer_cli/subcommand.rb', line 83 def subcommand(name, description, subcommand_class = self, = {}, &block) definition = Definition.new(name, description, subcommand_class, ) define_subcommand(name, subcommand_class, definition, &block) end |
#subcommand!(name, description, subcommand_class = self, options = {}, &block) ⇒ Object
77 78 79 80 81 |
# File 'lib/hammer_cli/subcommand.rb', line 77 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 |