namespace :webpacker do

desc "Verifies if Node.js is installed"
task :check_node do
  begin
    node_version = `node -v`
    node_version = `nodejs -v` if node_version.blank?
    raise Errno::ENOENT if node_version.blank?

    pkg_path = Pathname.new("#{__dir__}/../../../package.json").realpath
    node_requirement = JSON.parse(pkg_path.read)["engines"]["node"]

    requirement = Gem::Requirement.new(node_requirement)
    version = Gem::Version.new(node_version.strip.tr("v", ""))

    unless requirement.satisfied_by?(version)
      $stderr.puts "Webpacker requires Node.js #{requirement} and you are using #{version}"
      $stderr.puts "Please upgrade Node.js https://nodejs.org/en/download/"
      $stderr.puts "Exiting!" && exit!
    end
  rescue Errno::ENOENT
    $stderr.puts "Node.js not installed. Please download and install Node.js https://nodejs.org/en/download/"
    $stderr.puts "Exiting!" && exit!
  end
end

end