Module: Luban::CLI::Commands::ClassMethods

Includes:
CommonMethods
Defined in:
lib/luban/cli/commands.rb

Instance Method Summary collapse

Methods included from CommonMethods

#has_command?, #has_commands?, #list_commands

Instance Method Details

#command(app = self, cmd, **opts, &blk) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/luban/cli/commands.rb', line 34

def command(app = self, cmd, **opts, &blk)
  cmd_class = command_class(cmd)
  klass = if self.const_defined?(command_class(cmd))
            self.const_get(command_class(cmd))
          else
            self.const_set(command_class(cmd), Class.new(Command))
          end
  commands[cmd] = klass.new(app, cmd, **opts, &blk)
end

#command_class(cmd) ⇒ Object



30
31
32
# File 'lib/luban/cli/commands.rb', line 30

def command_class(cmd)
  "#{classify(cmd)}Command"
end

#commandsObject



26
27
28
# File 'lib/luban/cli/commands.rb', line 26

def commands
  @commands ||= {}
end

#undef_command(cmd) ⇒ Object



44
45
46
# File 'lib/luban/cli/commands.rb', line 44

def undef_command(cmd)
  undef_method(commands.delete(cmd).action_method)
end