51 lines
1.5 KiB
Bash
Executable File
51 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REMOTE_HOST="serve"
|
|
REMOTE_APP_DIR="/home/serve/services/movie-select"
|
|
REMOTE_STATIC_DIR="/var/www/virtual/serve/html/movie-select"
|
|
|
|
echo "==> Installing local dependencies..."
|
|
bun install
|
|
|
|
echo "==> Building client (Vite)..."
|
|
bun run build
|
|
|
|
echo "==> Stamping service worker version..."
|
|
sed -i '' "s/__SW_VERSION__/$(date +%s)/" dist/client/sw.js
|
|
|
|
echo "==> Syncing static files to ${REMOTE_HOST}:${REMOTE_STATIC_DIR} ..."
|
|
rsync -avz --delete \
|
|
--exclude='.DS_Store' \
|
|
dist/client/ "${REMOTE_HOST}:${REMOTE_STATIC_DIR}/"
|
|
|
|
echo "==> Copying .htaccess for SPA fallback..."
|
|
scp .htaccess "${REMOTE_HOST}:${REMOTE_STATIC_DIR}/.htaccess"
|
|
|
|
echo "==> Syncing server code to ${REMOTE_HOST}:${REMOTE_APP_DIR} ..."
|
|
rsync -avz --delete \
|
|
--exclude='.DS_Store' \
|
|
--exclude='.git/' \
|
|
--exclude='.env' \
|
|
--exclude='.env.example' \
|
|
--exclude='dist/' \
|
|
--exclude='tests/' \
|
|
--exclude='scripts/' \
|
|
--exclude='node_modules/' \
|
|
--exclude='.htaccess' \
|
|
--exclude='.claude/' \
|
|
--exclude='AI_AGENT_REPORT.md' \
|
|
--exclude='*.test.ts' \
|
|
--exclude='vite.config.ts' \
|
|
--exclude='drizzle.config.ts' \
|
|
--exclude='biome.json' \
|
|
./ "${REMOTE_HOST}:${REMOTE_APP_DIR}/"
|
|
|
|
echo "==> Installing production dependencies on remote..."
|
|
ssh "${REMOTE_HOST}" "cd ${REMOTE_APP_DIR} && bun install --production"
|
|
|
|
echo "==> Restarting service..."
|
|
ssh "${REMOTE_HOST}" "systemctl --user restart movie-select 2>/dev/null || true"
|
|
|
|
echo "Done. Live at https://serve.uber.space/movie-select/"
|