Class: Docka::Cli

Inherits:
Thor
  • Object
show all
Defined in:
lib/docka/cli.rb

Direct Known Subclasses

Docka::Commands::Docka

Class Method Summary collapse

Class Method Details

.command(name) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/docka/cli.rb', line 3

def self.command(name)
  klass = self
  pascal = name.to_s.camelize
  autoload pascal, "#{self.name.underscore}/#{name}" unless autoload?(pascal)
  define_method name do |*args|
    begin
      "#{klass.name}::#{pascal}".constantize.new(self, *args).run
    rescue => ex
      a = []
      a << "#{ex.backtrace[0]}: #{ex.message.strip} (#{ex.class.name})"
      a << ex.backtrace[1..-1].map{|i| "  from #{i}"}.join("\n") if ex.backtrace.size >= 2
      ::Docka::App.instance.logger.fatal a.join("\n")
      exit 1
    end
  end
end