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

repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
node_version="24.19.0"
node_home="$HOME/.local/node-v${node_version}-linux-x64"
started_at=$SECONDS

printf 'Mix Math orb setup: Node %s\n' "$node_version"

if [[ ! -x "$node_home/bin/node" ]]; then
  archive="$(mktemp)"
  trap 'rm -f "$archive"' EXIT
  mkdir -p "$HOME/.local"
  printf 'Downloading Node %s…\n' "$node_version"
  curl -fsSL --retry 3 --retry-all-errors \
    "https://nodejs.org/dist/v${node_version}/node-v${node_version}-linux-x64.tar.xz" \
    -o "$archive"
  tar -xJf "$archive" -C "$HOME/.local"
  rm -f "$archive"
  trap - EXIT
else
  printf 'Using cached Node installation.\n'
fi

for executable in node npm npx corepack; do
  ln -sf "$node_home/bin/$executable" "/usr/local/bin/$executable"
done

printf 'Installing dependencies from package-lock.json…\n'
cd "$repo_root"
CI=1 npm_config_audit=false npm_config_fund=false npm_config_update_notifier=false \
  "$node_home/bin/npm" ci

printf 'Mix Math orb setup complete in %ss.\n' "$((SECONDS - started_at))"
