# frozen_string_literal: true

# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
require 'scheduled_jobs'

desc "For use with Heroku's Scheduler add-on"

# We use a single rake call so we can catch and send any errors that happen in the job
task :heroku_scheduled_job, [:name] => :environment do |_t, args|
  job_name = args[:name]
  # Fetch all the super admin emails so we can send a report
  enum = ScheduledJobs.send(job_name)

  results = ''
  enum.each do |lamb|
    result = lamb.call
    results += "Success: #{result}\n"
  rescue Exception => e
    results += "Failure: #{e}\n"
  end
  GenericMailer.admin_notice(
    subject: "Scheduled job results on CommitChange for '#{job_name}'",
    body: results.empty? ? 'No jobs to run today.' : results
  ).deliver_later
end