# frozen_string_literal: true

require "bundler/setup"
require "bundler/gem_tasks"
require "rake/testtask"

Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList["test/**/*_test.rb"].exclude("test/system/**/*", "test/dummy/**/*")
  t.verbose = true
end

Rake::TestTask.new "test:system" do |t|
  t.libs << "test"
  t.test_files = FileList["test/system/**/*_test.rb"]
  t.verbose = true
end

task :vendor_trix do
  require "importmap-rails"
  require "importmap/packager"

  packager = Importmap::Packager.new(vendor_path: "app/assets/javascripts")
  imports = packager.import("trix@^1.3.2", from: "unpkg")
  imports.each do |package, url|
    # trix 1.x's js file is just trix.js
    # url.gsub!("esm.min.js", "umd.js")
    puts %(Vendoring "#{package}" to #{packager.vendor_path}/#{package}.js via download from #{url})
    packager.download(package, url)

    # trix 1.x's js file is just trix.js
    css_url = url.gsub("js", "css")
    puts %(Vendoring "#{package}" to #{packager.vendor_path}/#{package}.css via download from #{css_url})

    response = Net::HTTP.get_response(URI(css_url))
    if response.code == "200"
      File.open(Pathname.new("app/assets/stylesheets/trix.css"), "w+") do |file|
        file.write response.body
      end
    end
  end
end

task default: :test
