#!/usr/bin/env bash
# apxdep - run npm in the apxtri project as user apxtri (service-context ops)
# Pins HOME and npm cache to the project dir so it never touches /home/apxtri.
# Usage:
#   apxdep npm install <pkg>            # add a dependency
#   apxdep npm install                  # full install (package-lock refresh)
# For "dev adds a dependency": prefer running npm as YOUR user (phil) with the
# shared-group/ACL setup so package scripts do not run as the service user.
set -euo pipefail

NODEPATH="${NODEPATH:-/opt/apxtowns/dev.zero}"
APXTRI_DIR="$NODEPATH/apxtri"
NVM_DIR="$APXTRI_DIR/.nvm"
CACHE="$APXTRI_DIR/.npm"

if [ $# -eq 0 ]; then
  echo "Usage: $0 <npm args...>" >&2
  exit 1
fi

NODE_BIN="$(ls -1 "$NVM_DIR"/versions/node/*/bin/node 2>/dev/null | tail -1)"
if [ -z "$NODE_BIN" ]; then
  echo "No node found under $NVM_DIR/versions — run setup/init.sh first." >&2
  exit 1
fi
NPM_CLI="$(dirname "$(dirname "$NODE_BIN")")/lib/node_modules/npm/bin/npm-cli.js"

run() {
  if [ "$(id -un)" = "apxtri" ]; then
    exec "$NODE_BIN" "$NPM_CLI" --cache "$CACHE" "$@"
  fi
  exec sudo -u apxtri env HOME="$APXTRI_DIR" "$NODE_BIN" "$NPM_CLI" --cache "$CACHE" "$@"
}

run "$@"