2026-01-25 10:55:28 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
|
|
|
|
2026-03-13 08:59:53 +00:00
|
|
|
# Resolve node when not in PATH (nvm environments).
|
|
|
|
|
if ! command -v node >/dev/null 2>&1; then
|
|
|
|
|
for _nvm_node in "$HOME/.nvm/versions/node"/*/bin/node; do
|
|
|
|
|
if [[ -x "$_nvm_node" ]]; then
|
|
|
|
|
export PATH="$(dirname "$_nvm_node"):$PATH"
|
|
|
|
|
break
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
fi
|
|
|
|
|
|
2026-01-25 10:55:28 +00:00
|
|
|
if [[ $# -lt 1 ]]; then
|
|
|
|
|
echo "usage: run-node-tool.sh <tool> [args...]" >&2
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
tool="$1"
|
|
|
|
|
shift
|
|
|
|
|
|
|
|
|
|
if [[ -f "$ROOT_DIR/pnpm-lock.yaml" ]] && command -v pnpm >/dev/null 2>&1; then
|
|
|
|
|
exec pnpm exec "$tool" "$@"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if { [[ -f "$ROOT_DIR/bun.lockb" ]] || [[ -f "$ROOT_DIR/bun.lock" ]]; } && command -v bun >/dev/null 2>&1; then
|
|
|
|
|
exec bunx --bun "$tool" "$@"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if command -v npm >/dev/null 2>&1; then
|
|
|
|
|
exec npm exec -- "$tool" "$@"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if command -v npx >/dev/null 2>&1; then
|
|
|
|
|
exec npx "$tool" "$@"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "Missing package manager: pnpm, bun, or npm required." >&2
|
|
|
|
|
exit 1
|