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

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
DEFAULT_BUILD="$SCRIPT_DIR/out/linux"
BUILD_PATH="${BUILD_PATH:-$DEFAULT_BUILD}"
INSTALL_PATH="${INSTALL_PATH:-/var/Galeria-ALPR-Control-Center}"

if [[ ! -d "$BUILD_PATH" ]]; then
  echo "Build não encontrada em $BUILD_PATH. Execute instalador/build-linux.sh primeiro." >&2
  exit 1
fi

echo "==> Deploy (sem modificar banco/updates) para \"$INSTALL_PATH\""
mkdir -p "$INSTALL_PATH"

EXCLUDES=(
  "updates"
  "server/updates"
  "server/prisma/dev.db"
  "server/prisma/dev.db-journal"
)

if command -v rsync >/dev/null 2>&1; then
  RSYNC_ARGS=(--delete "$BUILD_PATH"/ "$INSTALL_PATH"/)
  for exclude in "${EXCLUDES[@]}"; do
    RSYNC_ARGS+=(--exclude="$exclude")
  done
  rsync -a "${RSYNC_ARGS[@]}"
else
  echo "   rsync não disponível — copiando sem exclusões"
  cp -R "$BUILD_PATH"/. "$INSTALL_PATH"/
fi

echo "==> Atualizando scripts auxiliares"
mkdir -p "$INSTALL_PATH/server/scripts"
cp "$REPO_ROOT/server/scripts/reset_versions.mjs" "$INSTALL_PATH/server/scripts/" 2>/dev/null || true
cp "$REPO_ROOT/scripts/reset_updates.sh" "$INSTALL_PATH/reset_updates.sh" 2>/dev/null || true
chmod +x "$INSTALL_PATH/reset_updates.sh" 2>/dev/null || true

echo "==> Deploy concluído (dados preservados)."
