# frozen_string_literal: true

# rubocop:disable Metrics/BlockLength namespace :assets do

require 'sprockets'
require 'uglifier'
require 'yui/compressor'
sprockets = Sprockets::Environment.new { |env| env.logger = Logger.new($stdout) }
sprockets.css_compressor = YUI::CssCompressor.new
sprockets.js_compressor = Uglifier.new(harmony: true)

%w[assets vendor].each do |f|
  sprockets.append_path File.expand_path("../../#{f}", __FILE__)
end

output_path = File.expand_path('../public', __dir__)

desc 'Pre-compile CSS assets'
task :precompile_css do
  asset = sprockets['styles.css']
  outfile = Pathname.new(output_path).join('css/styles.css')
  FileUtils.mkdir_p outfile.dirname
  asset.write_to(outfile)
  puts 'successfully compiled css assets'
end

desc 'Pre-compile JavaScript assets'
task :precompile_js do
  asset = sprockets['app.js']
  outfile = Pathname.new(output_path).join('js/app.js')
  FileUtils.mkdir_p outfile.dirname
  asset.write_to(outfile)
  puts 'successfully compiled javascript assets'
end

desc 'precompile all assets'
task precompile: %i[precompile_css precompile_js]

end # rubocop:enable Metrics/BlockLength