#!/usr/bin/env bash
set -euo pipefail

REMOTE="mof-server"
REMOTE_PATH="/home/mof/public_html/OLD/email-dashboards-deploy"
PORT=3100

DATA_PATH="$(cd .. && pwd)/Data"
REMOTE_DATA_PATH="/home/mof/public_html/OLD/Data"

echo "==> Syncing source files..."
rsync -az --delete \
  --exclude='.next/' \
  --exclude='node_modules/' \
  --exclude='data/local-db.json.bak*' \
  --exclude='data/local-db.may-release.json' \
  --exclude='data/clm/clm-date-range.json' \
  --exclude='data/clm/clm-slide-names.json' \
  --exclude='data/uploads/' \
  --exclude='.env' \
  --exclude='.env.local' \
  --exclude='.env.bak*' \
  --exclude='*.log' \
  --exclude='.git/' \
  --exclude='test-results/' \
  --exclude='package-lock.json' \
  . "$REMOTE:$REMOTE_PATH"

echo "==> Syncing data files..."
ssh "$REMOTE" "mkdir -p $REMOTE_DATA_PATH/Jun $REMOTE_DATA_PATH/April $REMOTE_DATA_PATH/May"
rsync -az "$DATA_PATH/" "$REMOTE:$REMOTE_DATA_PATH/"

echo "==> Installing dependencies and building..."
ssh "$REMOTE" "cd $REMOTE_PATH && rm -f package-lock.json && npm install && npm run build"

# The app runs under systemd (email-dashboards.service, Restart=always).
# Never start it by hand — a second instance races the unit for port 3100
# and the EADDRINUSE crash-loop floors the box. Kill the main process and
# let systemd respawn it with the fresh build.
echo "==> Restarting app via systemd respawn..."
ssh "$REMOTE" "pkill -u mof -f '[n]ext-server' || true"
sleep 10
ssh "$REMOTE" "systemctl is-active email-dashboards && curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://localhost:$PORT/dashboard"

echo "==> Done — check https://ministryoffish.com/email-dashboards"
