#!/usr/bin/env bash
set -Eeuo pipefail
cd "$(dirname "$0")"

SOURCE="$PWD/DuoChess.app"
USER_APPS="$HOME/Applications"
DEST="$USER_APPS/DuoChess.app"
TEMP_DEST="$USER_APPS/.DuoChess.app.installing"
SYSTEM_COPY="/Applications/DuoChess.app"

pause() {
  read -r -p "Нажмите Enter, чтобы закрыть окно…" _ || true
}

on_error() {
  local code=$?
  echo
  echo "Установка остановилась. Код ошибки: $code"
  pause
  exit "$code"
}
trap on_error ERR

echo "DuoChess 5.1.3 — установка для macOS"
echo
echo "Установщик автоматически заменит предыдущую версию."
echo "Ник, рейтинг, настройки и история партий сохранятся."
echo

[[ -d "$SOURCE" ]] || {
  echo "ОШИБКА: рядом с установщиком нет DuoChess.app."
  pause
  exit 1
}

echo "[1/5] Закрываем запущенную DuoChess…"
osascript -e 'tell application "DuoChess" to quit' >/dev/null 2>&1 || true
sleep 2
pkill -x DuoChess >/dev/null 2>&1 || true

echo "[2/5] Подготавливаем папку Applications…"
mkdir -p "$USER_APPS"
rm -rf "$TEMP_DEST"

echo "[3/5] Копируем новую версию…"
ditto "$SOURCE" "$TEMP_DEST"
xattr -dr com.apple.quarantine "$TEMP_DEST" >/dev/null 2>&1 || true
chmod -R u+rwX "$TEMP_DEST"

echo "[4/5] Заменяем предыдущую версию…"
rm -rf "$DEST"
mv "$TEMP_DEST" "$DEST"

# Старые установщики DuoChess использовали ~/Applications.
# Если пользователь вручную положил отдельную копию в /Applications,
# она может мешать запуску новой версии. Предлагаем удалить только дубликат.
if [[ -d "$SYSTEM_COPY" ]]; then
  echo
  echo "Найдена дополнительная старая копия:"
  echo "$SYSTEM_COPY"
  echo "Чтобы на Mac не осталось двух разных версий, сейчас появится"
  echo "стандартный запрос macOS на удаление этой старой копии."
  SYSTEM_Q="$(python3 -c 'import shlex,sys; print(shlex.quote(sys.argv[1]))' "$SYSTEM_COPY")"
  osascript -e "do shell script \"rm -rf ${SYSTEM_Q}\" with administrator privileges" \
    >/dev/null 2>&1 || {
      echo "Старая копия в /Applications не удалена."
      echo "Новая версия всё равно установлена в ~/Applications."
    }
fi

echo "[5/5] Запускаем DuoChess 5.1.3…"
open "$DEST"

echo
echo "============================================================"
echo "ГОТОВО"
echo "DuoChess 5.1.3 установлена:"
echo "$DEST"
echo
echo "Старое приложение заменено."
echo "Ник, рейтинг, настройки и история сохранены."
echo "============================================================"
pause
