require “clemency”

namespace :clemency do

# TODO: Refactor the migrate and rollback - loads of duplication...

desc "Migrates a specific release version"
task :migrate, [:version] => [:environment] do |t, args|
  version = args[:version]
  if version.nil?
    version = File.read("#{Rails.root}/.version").to_s.strip
  end
  Clemency.load_config
  Clemency.load_release_files
  Clemency.migrate!(version)
end

desc "Rollback a specific release version"
task :rollback, [:version] => [:environment] do |t, args|
  version = args[:version]
  if version.nil?
    version = File.read("#{Rails.root}/.version").to_s.strip
  end
  Clemency.load_config
  Clemency.load_release_files
  Clemency.rollback!(version)
end

desc "Generate changelog for a release"
task :changelog, [:version] => [:environment] do |t, args|
  version = args[:version]
  if version.nil?
    version = File.read("#{Rails.root}/.version").to_s.strip
  end
  puts "Clemency is generating a changelog for release #{version}"
  Clemency.load_release_files
  release = Clemency.releases.fetch(version, nil)
  if release.nil?
    puts "We could not find release #{version}"
    next
  end
  puts release.to_markdown
end

end