#!/bin/bash
# Spouštěč Bábofkátoru. Při prvním spuštění doinstaluje potřebné knihovny.
VER="0.5"
RES="$(cd "$(dirname "$0")/../Resources" && pwd)"
APPDIR="$(cd "$RES/../.." && pwd)"
SUP="$HOME/Library/Application Support/Babofkator"
VENV="$SUP/venv"
PY="$VENV/bin/python"

# --- Aplikace nesmí běžet z obrazu disku ----------------------------------
# macOS spouští stažené aplikace mimo Aplikace v izolované dočasné kopii
# (App Translocation) a DMG je navíc jen pro čtení — cesty by po odpojení
# obrazu přestaly platit. Proto uživatele rovnou nasměrujeme.
VOLUME="$(df -P "$RES" 2>/dev/null | awk 'NR==2{print $NF}')"
READONLY=0
case "$RES" in */AppTranslocation/*) READONLY=1;; esac
if [ "$READONLY" -eq 0 ] && [ -n "$VOLUME" ]; then
  mount | grep -q "on $VOLUME (.*read-only" && READONLY=1
fi
if [ "$READONLY" -eq 1 ]; then
  A=$(osascript -e 'display dialog "Bábofkátor je potřeba nejdřív přetáhnout do složky Aplikace a spustit odtud." & return & return & "Spuštěný přímo z obrazu disku ho macOS izoluje do dočasné kopie, která po odpojení obrazu zmizí." with title "Bábofkátor" buttons {"Zavřít","Přesunout do Aplikací"} default button 2 with icon caution' 2>/dev/null)
  case "$A" in
    *"Přesunout do Aplikací"*)
      if cp -R "$APPDIR" /Applications/ 2>/dev/null; then
        open "/Applications/$(basename "$APPDIR")"
      else
        osascript -e 'display dialog "Kopírování do složky Aplikace se nezdařilo — přetáhni ikonu ručně." with title "Bábofkátor" buttons {"Zavřít"} default button 1' >/dev/null 2>&1
      fi;;
  esac
  exit 0
fi

if [ ! -x "$PY" ] || [ ! -f "$SUP/.nainstalovano-$VER" ]; then
  # uživatel aplikaci právě povolil -> sundat karanténu i z vnitřních souborů
  xattr -dr com.apple.quarantine "$RES/.." 2>/dev/null

  SYSPY=""
  for c in python3.13 python3.12 python3.11 python3.10 python3; do
    if command -v "$c" >/dev/null 2>&1; then
      V=$("$c" -c 'import sys;print("%d%02d"%sys.version_info[:2])' 2>/dev/null)
      if [ -n "$V" ] && [ "$V" -ge 309 ]; then SYSPY=$(command -v "$c"); break; fi
    fi
  done

  if [ -z "$SYSPY" ]; then
    A=$(osascript -e 'display dialog "Bábofkátor potřebuje Python 3.9 nebo novější, který v systému není." & return & return & "Otevřít stránku, odkud se stahuje? (balík „macOS 64-bit universal2“)" with title "Bábofkátor" buttons {"Zavřít","Otevřít stránku"} default button 2 with icon caution' 2>/dev/null)
    case "$A" in *"Otevřít stránku"*) open "https://www.python.org/downloads/macos/";; esac
    exit 1
  fi

  # grafický instalátor (okno s průběhem, bez Terminálu)
  "$SYSPY" "$RES/instalator.py"
  rc=$?
  if [ "$rc" -eq 3 ]; then      # chybí tkinter -> textová instalace
    chmod +x "$RES/prvni-spusteni.command" 2>/dev/null
    open -a Terminal "$RES/prvni-spusteni.command" 2>/dev/null || \
      "$RES/prvni-spusteni.command"
  fi
  exit 0
fi

# příkaz pro Terminál obnovujeme při každém startu, aby ukazoval na
# aktuální umístění aplikace
mkdir -p "$SUP"
printf '#!/bin/bash\nexport PYTHONPATH="%s"\nexec "%s" -m babofkator "$@"\n' \
  "$RES/app" "$PY" > "$SUP/babofkator" 2>/dev/null
chmod +x "$SUP/babofkator" 2>/dev/null

export PYTHONPATH="$RES/app"
export PYTHONDONTWRITEBYTECODE=1
exec "$PY" -m babofkator.desktop
