class Vx::Worker::CLI

Public Class Methods

new() click to toggle source
# File lib/vx/worker/cli.rb, line 13
def initialize
  @options = {}
  parse!
  Worker.initialize!
end

Public Instance Methods

run() click to toggle source
# File lib/vx/worker/cli.rb, line 19
def run
  trap('INT') {
    Thread.new do
      Vx::Common::AMQP.shutdown
    end.join
  }

  Vx::Common::AMQP::Supervisor::Threaded.build(
    Vx::Worker::JobsConsumer => config.workers,
  ).run
end

Private Instance Methods

parse!() click to toggle source
# File lib/vx/worker/cli.rb, line 33
def parse!
  OptionParser.new do |opts|
    opts.banner = "Usage: vx-worker [options]"
    opts.on("-w", "--workers NUM", "Number of workers, default 1") do |v|
      @options[:workers] = v.to_i
    end
    opts.on("-p", "--path PATH", "Working directory, default current directory") do |v|
      @options[:path_prefix] = v.to_s
    end
    opts.on("-c", "--config FILE", "Path to configuration file, default /etc/vexor/ci") do |v|
      @options[:config] = v
    end
  end.parse!

  read_env_file @options.delete(:config)

  @options.each_pair do |k,v|
    config.public_send("#{k}=", v)
  end
end