#!/usr/bin/env bash
# Installs the 3D toolchain for the portfolio into your HOME folder (no sudo, no system changes):
#   - Blender 4.2 LTS (runs headless: model clean-up, FBX->GLB, retargeting, compression)
#   - Node.js 22 LTS via nvm + gltf-transform (GLB compression)
#   - a private file for your Sketchfab API token
# Run on the server:  bash ~/claude_projects/server/portfolio/setup/install-3d-tools.sh
set -euo pipefail

BLENDER_VER="4.2.23"
NVM_VER="v0.41.0"
OPT="$HOME/opt"; BIN="$HOME/.local/bin"
mkdir -p "$OPT" "$BIN"

echo "==> Blender $BLENDER_VER"
if [ ! -x "$OPT/blender-$BLENDER_VER/blender" ]; then
  url="https://download.blender.org/release/Blender4.2/blender-$BLENDER_VER-linux-x64.tar.xz"
  curl -fL "$url" -o "/tmp/blender-$BLENDER_VER.tar.xz"
  tar -xJf "/tmp/blender-$BLENDER_VER.tar.xz" -C "$OPT"
  mv "$OPT/blender-$BLENDER_VER-linux-x64" "$OPT/blender-$BLENDER_VER"
  rm -f "/tmp/blender-$BLENDER_VER.tar.xz"
fi
ln -sf "$OPT/blender-$BLENDER_VER/blender" "$BIN/blender"
"$BIN/blender" -b --version | head -1

echo "==> Node.js 22 LTS (nvm $NVM_VER) + gltf-transform"
export NVM_DIR="$HOME/.nvm"
if [ ! -s "$NVM_DIR/nvm.sh" ]; then
  curl -fsSL "https://raw.githubusercontent.com/nvm-sh/nvm/$NVM_VER/install.sh" | bash
fi
# shellcheck disable=SC1091
. "$NVM_DIR/nvm.sh"
nvm install 22 >/dev/null
nvm alias default 22 >/dev/null
npm install -g @gltf-transform/cli >/dev/null
echo "node $(node -v) · gltf-transform $(gltf-transform --version 2>/dev/null || echo installed)"

echo "==> Sketchfab API token (from https://sketchfab.com/settings/password -> API Token)"
mkdir -p "$HOME/.config/sketchfab"; chmod 700 "$HOME/.config/sketchfab"
if [ ! -s "$HOME/.config/sketchfab/token" ]; then
  read -r -s -p "Paste token (input hidden, Enter to skip): " tok || tok=""; echo
  if [ -n "${tok:-}" ]; then umask 077; printf '%s' "$tok" > "$HOME/.config/sketchfab/token"; echo "saved (only you can read it)"; else echo "skipped"; fi
else echo "already saved"; fi

echo "==> Folders for files you download in the browser"
mkdir -p "$HOME/claude_projects/server/portfolio/assets/raw/mixamo" "$HOME/claude_projects/server/portfolio/assets/raw/avatar"
echo "Done. Put Mixamo FBX files in assets/raw/mixamo and your avatar GLB in assets/raw/avatar."
