require 'fileutils'

namespace :railway_ipc do
  namespace :generate do
    desc "Generates migrations to store Railway messages"
    task :migrations do
      if defined?(ActiveRecord::Base)
        puts "generating Railway IPC table migrations"
        seconds = 0
        gem_path = Gem.loaded_specs['railway-ipc'].full_gem_path
        folder_dest = "#{Rails.root.to_s}/db/migrate"
        FileUtils.mkdir_p(folder_dest)

        Dir.glob("#{gem_path}/priv/migrations/*.rb").each do |file_path|
          file_name = File.basename(file_path)
          migration_timestamp = (Time.now + seconds).utc.strftime("%Y%m%d%H%M%S") % "%.14d"
          new_file_name = "#{migration_timestamp}_#{file_name}"
          FileUtils.copy_file(file_path, "#{folder_dest}/#{new_file_name}")
          seconds += 1
        end
      else
        raise "Migration generation requires active record"
      end
    end
  end
end