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

ACTION="${1:-}"
NON_INTERACTIVE=0
if [[ "${2:-}" == "--non-interactive" ]] || [[ "${DEPLOY_NON_INTERACTIVE:-}" == "1" ]]; then
  NON_INTERACTIVE=1
fi

usage() {
  echo "Usage: install-dependency.sh <node> [--non-interactive]" >&2
  exit 2
}

case "${ACTION}" in
  node) ;;
  *) usage ;;
esac

run_privileged() {
  if [[ "$(id -u)" -eq 0 ]]; then
    "$@"
  elif [[ "${NON_INTERACTIVE}" -eq 1 ]]; then
    sudo -n "$@"
  else
    sudo "$@"
  fi
}

install_node() {
  local setup
  local nodesource_url="https://deb.nodesource.com/setup_22.x"
  setup="$(mktemp)"
  trap 'rm -f "${setup}"' RETURN
  curl -fsSL "${nodesource_url}" -o "${setup}"
  run_privileged bash "${setup}"
  run_privileged apt-get install -y nodejs
  rm -f "${setup}"
  trap - RETURN
  node --version >/dev/null
  npm --version >/dev/null
}

case "${ACTION}" in
  node) install_node ;;
esac