class Runner

Constants

SCHEMA

Public Class Methods

new(config_file: nil) click to toggle source
# File lib/runner.rb, line 8
def initialize(config_file: nil)
  default_file = File.join(Dir.home, '.drobot.yaml')
  @config_file = config_file || default_file
  @config = YAML.load_file(@config_file)

  JSON::Validator.validate!(SCHEMA, @config, insert_defaults: true)
end

Public Instance Methods

drobots() click to toggle source
# File lib/runner.rb, line 16
def drobots
  @drobots ||= @config['drobots'].map do |name, config|
    credential_provider = determine_provider(config['credentials']['type']).new(config['credentials'])
    determine_drobot(name).new(credential_provider)
  end
end
run() click to toggle source
# File lib/runner.rb, line 23
def run
  drobots.each(&:run)
end

Private Instance Methods

determine_drobot(name) click to toggle source
# File lib/runner.rb, line 29
def determine_drobot(name)
  drobot = Object.const_get("Drobots::#{name}")
  raise "#{name} doesn't inherit from Drobot" unless drobot <= Drobot
  drobot
rescue NameError
  raise "unknown Drobot #{name}"
end
determine_provider(name) click to toggle source
# File lib/runner.rb, line 37
def determine_provider(name)
  provider_name = "Credentials::#{name}Provider"
  provider = Object.const_get(provider_name)
rescue NameError
  raise "unknown Provider #{provider_name}"
end