require 'optparse' require 'cassie/schema/cassandra_migrations/importer'

namespace :cassie do

namespace :migrations do
  desc "Imports existing `cassandra_migrations` migration files and converts to semantic versioning"
  task :import => "cassie:schema:init" do
    include Cassie::Tasks::IO

    begin
      puts "-- Importing `cassandra_migrations` migration files"
      opts = {}
      OptionParser.new do |args|
        args.on("-p", "--path PATH", "Directory containing existing migrations. Defaults to 'db/cassandra_migrate'.") do |p|
          opts[:path] = p
        end
      end.parse!(argv)

      importer = Cassie::Schema::CassandraMigrations::Importer.new(opts[:path])
      importer.before_each = Proc.new do |migration_file|
        rel_path = migration_file.filename.sub(Dir.pwd, "")
        puts "   - Importing #{rel_path}"
      end
      importer.after_each = Proc.new do |version|
        rel_path = version.migration.path.sub(Dir.pwd, "")
        puts "     > #{green('created')} #{rel_path}"
        puts "     > #{white('recorded')} version #{version}"
        puts "   - done"
      end

      importer.import
      puts "-- done"
    rescue => e
      importer.imported_paths.each {|f| File.delete(f) } if importer
      output_error(e)
      abort
    end
  end
end

end

Rake::Task.enhance do

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

end