#!/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-source-cache.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"

echo "==> Restarting app on port $PORT..."
ssh "$REMOTE" "pgrep -f 'next-server' | xargs kill 2>/dev/null || true; sleep 1"
ssh "$REMOTE" "cd $REMOTE_PATH && nohup env PORT=$PORT npm start >> app.log 2>&1 &"
sleep 8
ssh "$REMOTE" "pgrep -fa 'next-server' | grep -v grep && curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://localhost:$PORT/dashboard"

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