class Phobos::CLI::Start

Attributes

boot_file[R]
config_file[R]
listeners_file[R]

Public Class Methods

new(options) click to toggle source
# File lib/phobos/cli/start.rb, line 8
def initialize(options)
  @config_file = File.expand_path(options[:config]) unless options[:skip_config]
  @boot_file = File.expand_path(options[:boot])

  @listeners_file = File.expand_path(options[:listeners]) if options[:listeners]
end

Public Instance Methods

execute() click to toggle source
# File lib/phobos/cli/start.rb, line 15
def execute
  load_boot_file

  if config_file
    validate_config_file!
    Phobos.configure(config_file)
  end

  Phobos.add_listeners(listeners_file) if listeners_file

  validate_listeners!

  Phobos::CLI::Runner.new.run!
end

Private Instance Methods

error_exit(msg) click to toggle source
# File lib/phobos/cli/start.rb, line 61
def error_exit(msg)
  Phobos::CLI.logger.error { Hash(message: msg) }
  exit(1)
end
load_boot_file() click to toggle source
# File lib/phobos/cli/start.rb, line 66
def load_boot_file
  load(boot_file) if File.exist?(boot_file)
end
validate_config_file!() click to toggle source
# File lib/phobos/cli/start.rb, line 34
def validate_config_file!
  File.exist?(config_file) || error_exit("Config file not found (#{config_file})")
end
validate_listeners!() click to toggle source
# File lib/phobos/cli/start.rb, line 38
def validate_listeners! # rubocop:disable Metrics/MethodLength
  Phobos.config.listeners.each do |listener|
    handler = listener.handler

    begin
      handler.constantize
    rescue NameError
      error_exit("Handler '#{handler}' not defined")
    end

    delivery = listener.delivery
    if delivery.nil?
      Phobos::CLI.logger.warn do
        Hash(message: "Delivery option should be specified, defaulting to 'batch'"\
          ' - specify this option to silence this message')
      end
    elsif !Listener::DELIVERY_OPTS.include?(delivery)
      error_exit("Invalid delivery option '#{delivery}'. Please specify one of: "\
        "#{Listener::DELIVERY_OPTS.join(', ')}")
    end
  end
end