class Sidekiq::Cron::ScheduleLoader

def has_schedule_file?

def has_schedule_file?
  File.exist?(schedule_file_name)
end

def load_schedule

def load_schedule
  if schedule.is_a?(Hash)
    Sidekiq::Cron::Job.load_from_hash!(schedule, source: "schedule")
  elsif schedule.is_a?(Array)
    Sidekiq::Cron::Job.load_from_array!(schedule, source: "schedule")
  else
    raise "Not supported schedule format. Confirm your #{schedule_file_name}"
  end
end

def rendered_schedule_template

def rendered_schedule_template
  ERB.new(schedule_file_content).result
end

def schedule

def schedule
  @schedule ||= Sidekiq::Cron::Support.load_yaml(rendered_schedule_template)
end

def schedule_file_content

def schedule_file_content
  IO.read(schedule_file_name)
end

def schedule_file_name

def schedule_file_name
  @schedule_file_name ||= yml_to_yaml_unless_file_exists(schedule_file_name_from_config)
end

def schedule_file_name_from_config

def schedule_file_name_from_config
  Sidekiq::Cron.configuration.cron_schedule_file
end

def yml_to_yaml_unless_file_exists(file_name)

def yml_to_yaml_unless_file_exists(file_name)
  if File.exist?(file_name)
    file_name
  else
    file_name.sub(/\.yml$/, ".yaml")
  end
end