require “ucb_orgs/syncer”

namespace :ucb_orgs do

desc "Installs migrations to the current project"
task :install do
  puts "Checking for new migrations..."
  migrations_to_add = new_migrations()
  if migrations_to_add.empty?
    puts "No new migrations"
  else
    migrations_to_add.each do |migration|
      FileUtils.cp("#{migration_source_dir}/#{migration}", migration_target_dir)
    end
    puts "\nMigrations installed - ready to run \"rake db:migrate\""
  end
end

desc "Downloads org unit source file, and loads it into the database"
task update: :environment do
  puts "Updating org units..."
  begin
    UcbOrgs::Syncer.sync
    puts "Done."
  rescue Exception => e
    msg = e.respond_to?(:error_details) ? e.error_details : e.to_s
    puts "Unable to complete sync: #{msg}"
  end
end

def migration_source_dir
  "#{File.dirname(__FILE__)}/../migrations/"
end

def migration_target_dir
  "#{Rails.root}/db/migrate"
end

def new_migrations
  already_installed = Dir.entries(migration_target_dir)
  Dir.entries(migration_source_dir).reject do |m|
    already_installed.include?(m)
  end
end

end