Class: Percheron::Commands::Abstract

Inherits:
Clamp::Command
  • Object
show all
Defined in:
lib/percheron/commands/abstract.rb

Direct Known Subclasses

Build, Console, Create, Graph, List, Logs, Main, Purge, Restart, Shell, Start, Stop

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.default_parameters!Object



13
14
15
16
17
18
# File 'lib/percheron/commands/abstract.rb', line 13

def self.default_parameters!
  parameter('STACK_NAME', 'stack name', required: true)
  parameter('UNIT_NAMES', 'unit names', default: [], required: false) do |names|
    names.split(/,/)
  end
end

Instance Method Details

#configObject



45
46
47
48
49
50
51
# File 'lib/percheron/commands/abstract.rb', line 45

def config
  @config ||= begin
    Percheron::Config.load!(config_file).tap do |c|
      Percheron::Connection.load!(c)
    end
  end
end

#executeObject



29
30
31
32
33
34
35
36
37
38
# File 'lib/percheron/commands/abstract.rb', line 29

def execute
  stack.valid?
rescue Errno::ENOENT, Errors::ConfigFileInvalid, Errors::StackInvalid => e
  signal_usage_error(e.message)
  exit(1)
rescue => e
  puts "%s\n\n%s\n\n" % [ e.inspect, e.backtrace.join("\n") ]
  signal_usage_error(e.message)
  exit(1)
end

#runitObject



20
21
22
23
24
25
26
27
# File 'lib/percheron/commands/abstract.rb', line 20

def runit
  yield
rescue Docker::Error::UnexpectedResponseError => e
  $logger.error('')
  $logger.error('An exception occurred :(')
  $logger.error('')
  $logger.error(e.inspect)
end

#stackObject



40
41
42
43
# File 'lib/percheron/commands/abstract.rb', line 40

def stack
  return NullStack.new if stack_name.nil?
  Percheron::Stack.new(config, stack_name)
end