# frozen_string_literal: true

namespace :yarn do

desc "Install all JavaScript dependencies as specified via Yarn"
task :install do
  # Install only production deps when for not usual envs.
  valid_node_envs = %w[test development production]
  node_env = ENV.fetch("NODE_ENV") do
    valid_node_envs.include?(Rails.env) ? Rails.env : "production"
  end

  yarn_flags =
    if `yarn --version`.start_with?("1")
      "--no-progress --frozen-lockfile"
    else
      "--immutable"
    end

  system(
    { "NODE_ENV" => node_env },
    "yarn install #{yarn_flags}",
    exception: true
  )
rescue Errno::ENOENT
  $stderr.puts "yarn install failed to execute."
  $stderr.puts "Ensure yarn is installed and `yarn --version` runs without errors."
  exit 1
end

end