$stdout.sync = true

def ensure_log_goes_to_stdout

old_logger = Webpacker.logger
Webpacker.logger = ActiveSupport::Logger.new(STDOUT)
yield

ensure

Webpacker.logger = old_logger

end

namespace :webpacker do

desc "Compile javascript packs using webpack for production with digests"
task compile: ["webpacker:verify_install", :environment] do
  ensure_log_goes_to_stdout do
    if Webpacker.compile
      # Successful compilation!
    else
      # Failed compilation
      exit!
    end
  end
end

end

# Compile packs after we've compiled all other assets during precompilation begin

if Rake::Task.task_defined?("assets:precompile")
  Rake::Task["assets:precompile"].enhance do
    unless Rake::Task.task_defined?("yarn:install")
      # For Rails < 5.1
    end
  end
end

end