#!/usr/bin/env bash
set -euo pipefail

work_dir="$(mktemp -d)"
cleanup() {
  rm -rf "$work_dir"
}
trap cleanup EXIT

cd "$work_dir"
base_url="https://nodejs.org/dist/latest-v22.x"
checksums="$(curl -fsSL "$base_url/SHASUMS256.txt")"
archive="$(printf '%s\n' "$checksums" | awk '/linux-x64.tar.xz$/ { print $2; exit }')"
checksum="$(printf '%s\n' "$checksums" | awk -v file="$archive" '$2 == file { print $1 }')"

test -n "$archive"
test -n "$checksum"
curl -fsSLO "$base_url/$archive"
printf '%s  %s\n' "$checksum" "$archive" | sha256sum -c -

install_dir="/opt/${archive%.tar.xz}"
sudo rm -rf "$install_dir" /opt/node22
sudo tar -xJf "$archive" -C /opt
sudo ln -s "$install_dir" /opt/node22
sudo ln -sfn /opt/node22/bin/node /usr/local/bin/node
sudo ln -sfn /opt/node22/bin/npm /usr/local/bin/npm
sudo ln -sfn /opt/node22/bin/npx /usr/local/bin/npx

node --version
npm --version
