require 'rake' require 'fileutils'

namespace :firebolt do

namespace :cache do
  desc 'Rebuild the cache by purging and re-warming'
  task :rebuild => :environment do
    ::Rake::Task['firebolt:cache:purge'].invoke
    ::Rake::Task['firebolt:cache:warm'].invoke
    puts 'Cache rebuilt'
  end

  desc 'Purge the cache and startup file'
  task :purge => :environment do
    pattern = ::Firebolt.cache_key_with_salt('*', ::Firebolt.salt)
    puts "Purging keys matching pattern '#{pattern}'"
    ::Firebolt.config.cache.delete_matched(pattern)

    if ::Firebolt.config.cache_file_readable?
      cache_file = ::Firebolt.config.cache_file
      puts "Removing cache file at '#{cache_file}'"
      ::FileUtils.rm(cache_file)
    end
  end

  desc 'Warm the cache with a new salt'
  task :warm => :environment do
    ::Firebolt.initialize!
    warmer = ::Firebolt.config.warmer
    puts "Warming the cache with #{warmer}"
    ::Firebolt::WarmCacheJob.new.perform(warmer)
  end
end

end