namespace :cassie do

namespace :schema do
  desc "Migrates the schema by running the `up` methods for any migrations starting after the current schema version"
  task :migrate do
    include Cassie::Tasks::IO

    begin
      version = argv[0]

      migrator = Cassie::Schema::Migrator.new(version)
      puts "-- Migrating '#{Cassie.env}' schema to version #{migrator.target_version}"

      if migrator.commands.count == 0
        if migrator.target_version == migrator.current_version
          puts "   > Already at #{migrator.target_version}, nothing to do..."
          abort
        else
          raise "No migration files found to migrate to #{migrator.target_version}, staying at #{migrator.current_version}"
        end
      else
        migrator.before_each = Proc.new do |v, direction|
          puts "   - Migragting version #{v} #{direction.upcase}"
        end
        migrator.after_each = Proc.new do |_migration, duration|
          puts "   - done (#{duration} ms)"
        end
        migrator.migrate
        puts "-- done"
      end
    rescue => e
      output_error(e)
      abort
    end
  end
end
desc "alias for schema:migrate"
task :migrate => "schema:migrate"

end

Rake::Task.enhance do

Rake::Task["cassie:schema:dump"].invoke

end