class Resque::Scheduler::Env

def cleanup

def cleanup
  cleanup_pid_file
end

def cleanup_pid_file

def cleanup_pid_file
  return unless pidfile_path
  File.delete(pidfile_path) if File.exist?(pidfile_path)
  @pidfile_path = nil
end

def initialize(options)

def initialize(options)
  @options = options
  @pidfile_path = nil
end

def setup

def setup
  require 'resque'
  require 'resque/scheduler'
  setup_backgrounding
  setup_pid_file
  setup_scheduler_configuration
end

def setup_backgrounding

def setup_backgrounding
  return unless options[:background]
  # Need to set this here for conditional Process.daemon redirect of
  # stderr/stdout to /dev/null
  Resque::Scheduler.quiet = if options.key?(:quiet)
                              !!options[:quiet]
                            else
                              true
                            end
  Process.daemon(true, !Resque::Scheduler.quiet)
  Resque.redis.reconnect
end

def setup_pid_file

def setup_pid_file
  return unless options[:pidfile]
  @pidfile_path = File.expand_path(options[:pidfile])
  File.open(pidfile_path, 'w') do |f|
    f.puts $PROCESS_ID
  end
  at_exit { cleanup_pid_file }
end

def setup_scheduler_configuration

rubocop:disable Metrics/AbcSize
def setup_scheduler_configuration
  Resque::Scheduler.configure do |c|
    c.app_name = options[:app_name] if options.key?(:app_name)
    c.dynamic = !!options[:dynamic] if options.key?(:dynamic)
    c.env = options[:env] if options.key?(:env)
    c.logfile = options[:logfile] if options.key?(:logfile)
    c.logformat = options[:logformat] if options.key?(:logformat)
    c.lock_timeout = options[:lock_timeout] if options.key?(:lock_timeout)
    if (psleep = options[:poll_sleep_amount]) && !psleep.nil?
      c.poll_sleep_amount = Float(psleep)
    end
    c.verbose = !!options[:verbose] if options.key?(:verbose)
  end
end