Initial commit
This commit is contained in:
40
scripts/install-node.sh
Executable file
40
scripts/install-node.sh
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
# Installs Node.js 22 into DailyMeals/.toolchain (no Homebrew required).
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
VERSION="22.22.0"
|
||||
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
||||
ARCH="$(uname -m)"
|
||||
case "$ARCH" in
|
||||
arm64|aarch64) ARCH="arm64" ;;
|
||||
x86_64|amd64) ARCH="x64" ;;
|
||||
*) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;;
|
||||
esac
|
||||
|
||||
DIR_NAME="node-v${VERSION}-${OS}-${ARCH}"
|
||||
TARGET="$ROOT/.toolchain/$DIR_NAME"
|
||||
|
||||
if [[ -x "$TARGET/bin/npm" ]]; then
|
||||
echo "Node.js already installed: $TARGET"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Reuse FA_WEB toolchain when present (same machine, same arch).
|
||||
FA_WEB_TOOLCHAIN="$ROOT/../FA_WEB/.toolchain/$DIR_NAME"
|
||||
if [[ -d "$FA_WEB_TOOLCHAIN" ]]; then
|
||||
mkdir -p "$ROOT/.toolchain"
|
||||
ln -sfn "$FA_WEB_TOOLCHAIN" "$TARGET"
|
||||
echo "Linked toolchain from FA_WEB: $TARGET"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p "$ROOT/.toolchain"
|
||||
TARBALL="node-v${VERSION}-${OS}-${ARCH}.tar.gz"
|
||||
URL="https://nodejs.org/dist/v${VERSION}/${TARBALL}"
|
||||
echo "Downloading $URL ..."
|
||||
curl -fsSL "$URL" -o "/tmp/${TARBALL}"
|
||||
tar -xzf "/tmp/${TARBALL}" -C "$ROOT/.toolchain"
|
||||
rm -f "/tmp/${TARBALL}"
|
||||
echo "Installed: $TARGET"
|
||||
echo "Use: $ROOT/scripts/npm --version"
|
||||
16
scripts/node
Executable file
16
scripts/node
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
VERSION="22.22.0"
|
||||
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
||||
ARCH="$(uname -m)"
|
||||
case "$ARCH" in
|
||||
arm64|aarch64) ARCH="arm64" ;;
|
||||
x86_64|amd64) ARCH="x64" ;;
|
||||
esac
|
||||
NODE="$ROOT/.toolchain/node-v${VERSION}-${OS}-${ARCH}/bin/node"
|
||||
if [[ ! -x "$NODE" ]]; then
|
||||
echo "Run ./scripts/install-node.sh first" >&2
|
||||
exit 1
|
||||
fi
|
||||
exec "$NODE" "$@"
|
||||
23
scripts/npm
Executable file
23
scripts/npm
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
# npm wrapper that uses the project-local Node toolchain.
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
VERSION="22.22.0"
|
||||
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
|
||||
ARCH="$(uname -m)"
|
||||
case "$ARCH" in
|
||||
arm64|aarch64) ARCH="arm64" ;;
|
||||
x86_64|amd64) ARCH="x64" ;;
|
||||
esac
|
||||
|
||||
DIR_NAME="node-v${VERSION}-${OS}-${ARCH}"
|
||||
NPM="$ROOT/.toolchain/$DIR_NAME/bin/npm"
|
||||
|
||||
if [[ ! -x "$NPM" ]]; then
|
||||
echo "Node toolchain not found. Run from DailyMeals root:" >&2
|
||||
echo " ./scripts/install-node.sh" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec "$NPM" "$@"
|
||||
Reference in New Issue
Block a user