class Schked::Config

def callbacks

def callbacks
  @callbacks ||= Hash.new { |hsh, key| hsh[key] = [] }
end

def do_not_load_root_schedule?

def do_not_load_root_schedule?
  !!@do_not_load_root_schedule
end

def fire_around_callback(name, job, calls = callbacks[name], &block)

def fire_around_callback(name, job, calls = callbacks[name], &block)
  return yield if calls.none?
  calls.first.call(job) do
    calls = calls.drop(1)
    if calls.any?
      fire_around_callback(name, job, calls, &block)
    else
      yield
    end
  end
end

def fire_callback(name, *args)

def fire_callback(name, *args)
  callbacks[name].each do |callback|
    callback.call(*args)
  end
end

def logger

def logger
  @logger ||= Logger.new($stdout).tap { |l| l.level = Logger::INFO }
end

def logger?

def logger?
  !!@logger
end

def paths

def paths
  @paths ||= []
end

def redis

def redis
  @redis ||= {url: ENV.fetch("REDIS_URL", "redis://127.0.0.1:6379")}
end

def redis_servers=(val)

def redis_servers=(val)
  val = val.first
  if val.is_a?(String)
    self.redis = {url: val}
  elsif val.respond_to?(:_client)
    conf = val._client.config
    self.redis = {url: conf.server_url, username: conf.username, password: conf.password}
  else
    raise ArgumentError, "Schked `redis_servers=` config option is deprecated. Please use `redis=` with a Hash"
  end
  warn "🔥 Schked `redis_servers=` config option is deprecated. Please use `redis=` with a Hash. Called from #{caller(1..1).first}"
end

def register_callback(name, &block)

def register_callback(name, &block)
  callbacks[name] << block
end

def standalone?

def standalone?
  @standalone = ENV["RAILS_ENV"] == "test" || ENV["RACK_ENV"] == "test" if @standalone.nil?
  !!@standalone
end