#!/usr/bin/env bash # TOASTSIM — deploy to partly.party/toastsim (games VPS, forum-nginx pattern). # ./scripts/deploy.sh # Build with subpath base → rsync to VPS staging → docker cp into web root → curl verify. set -euo pipefail VPS="humanjing@100.71.119.27" CONTAINER="forum-nginx" REMOTE_WEB_ROOT="/usr/share/nginx/html/toastsim" STAGING="/tmp/toastsim_deploy" REPO="$(cd "$(dirname "$0")/.." && pwd)" echo "[1/4] Building (base=/toastsim/)..." cd "$REPO" ./node_modules/.bin/tsc --noEmit ./node_modules/.bin/vite build --base=/toastsim/ echo "[2/4] Rsync dist → $VPS:$STAGING ..." ssh "$VPS" "rm -rf '$STAGING' && mkdir -p '$STAGING'" rsync -az dist/ "$VPS:$STAGING/" echo "[3/4] Swap into $CONTAINER:$REMOTE_WEB_ROOT ..." ssh "$VPS" "docker exec '$CONTAINER' rm -rf '$REMOTE_WEB_ROOT' \ && docker cp '$STAGING' '$CONTAINER:$REMOTE_WEB_ROOT'" echo "[4/4] Verify..." code=$(curl -so /dev/null -w '%{http_code}' "https://partly.party/toastsim/?cb=$(date +%s)") echo "https://partly.party/toastsim/ → HTTP $code" [ "$code" = 200 ] || { echo "NOT DEPLOYED (non-200)"; exit 1; } echo "done."