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

SRC_DIR="${1:-/tmp/campus-express-miniapp}"
APP_DIR="/opt/campus-express-miniapp"

if [ ! -d "$SRC_DIR" ]; then
  echo "source directory not found: $SRC_DIR" >&2
  exit 1
fi

rm -rf "$APP_DIR"
mkdir -p "$APP_DIR"

cp -R "$SRC_DIR/server" "$APP_DIR/server"
cp -R "$SRC_DIR/utils" "$APP_DIR/utils"
cp "$SRC_DIR/package.json" "$APP_DIR/package.json"

if [ -f /etc/nginx/ssl/91tvikun.icu/fullchain.pem ] && [ -f /etc/nginx/ssl/91tvikun.icu/privkey.pem ]; then
  bash "$SRC_DIR/deploy/write-https-nginx.sh" 91tvikun.icu www.91tvikun.icu
else
  cp "$SRC_DIR/deploy/nginx/campus-express-miniapp.conf" /etc/nginx/conf.d/campus-express-miniapp.conf
fi
cp -R "$SRC_DIR/deploy/site/." /var/www/campus-express-site/

rm -rf /var/www/campus-express-miniapp
mkdir -p /var/www/campus-express-miniapp
cp -R "$SRC_DIR/." /var/www/campus-express-miniapp/

find "$APP_DIR" /var/www/campus-express-site /var/www/campus-express-miniapp -name '._*' -delete
find "$APP_DIR" /var/www/campus-express-site /var/www/campus-express-miniapp -name '__MACOSX' -type d -prune -exec rm -rf {} +

cd /var/www
rm -f /var/www/campus-express-miniapp.zip
zip -qr /var/www/campus-express-miniapp.zip campus-express-miniapp
mv /var/www/campus-express-miniapp.zip /var/www/campus-express-site/campus-express-miniapp.zip

systemctl daemon-reload
systemctl restart campus-express-api
for _ in $(seq 1 15); do
  if curl -fsS http://127.0.0.1:3000/api/health >/dev/null 2>&1; then
    break
  fi
  sleep 1
done
curl -fsS http://127.0.0.1:3000/api/health >/dev/null
nginx -t
systemctl restart nginx
