#!/bin/bash
# DILNA-BOOTSTRAP – první spuštění Dílny:
#  1) přesune se do Aplikací, 2) připraví skripty, 3) sestaví nativní okno (WebKit) a spustí se v něm.
SELF="$(cd "$(dirname "$0")/../.." && pwd -P)"
RES="$SELF/Contents/Resources"
SUP="$HOME/Library/Application Support/Dilna"
mkdir -p "$SUP/logs" "$SUP/bin" "$SUP/scripts" "$SUP/icons"
exec >>"$SUP/logs/bootstrap.log" 2>&1
echo "=== $(date '+%Y-%m-%d %H:%M:%S') $SELF"
export PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
alert() { /usr/bin/osascript -e "display dialog \"$1\" with title \"Dílna\" buttons {\"OK\"} default button 1" >/dev/null 2>&1; }
note() { /usr/bin/osascript -e "display notification \"$1\" with title \"Dílna\"" >/dev/null 2>&1; }

# 1) Dílna patří do Aplikací (jako každá jiná aplikace)
case "$SELF" in
  /Applications/*|"$HOME/Applications/"*) ;;
  *)
    DEST="/Applications"; [ -w "$DEST" ] || { DEST="$HOME/Applications"; mkdir -p "$DEST"; }
    T="$DEST/Dílna.app"
    if [ -d "$T" ] && ! /usr/bin/grep -qs -e DilnaManaged -e DILNA-BOOTSTRAP -e HLASOVKA-LAUNCHER "$T/Contents/Info.plist" "$T/Contents/MacOS/"*; then
      alert "V Aplikacích už je jiná aplikace s názvem Dílna. Přejmenuj ji a otevři Dílnu znovu."; exit 1
    fi
    # běžící starší Dílnu zavřeme (jinak by macOS jen přepnul na ni)
    /usr/bin/pkill -f "Applications/D[^/]*lna\.app/Contents/MacOS/DilnaApp" 2>/dev/null
    /usr/bin/osascript -e 'tell application id "cz.dilna.app" to quit' >/dev/null 2>&1
    sleep 1
    rm -rf "$T"
    /usr/bin/ditto "$SELF" "$T" || { alert "Dílnu se nepodařilo zkopírovat do složky Aplikace."; exit 1; }
    /usr/bin/xattr -dr com.apple.quarantine "$T" 2>/dev/null
    echo "zkopírováno do $T"
    /usr/bin/open "$T"
    exit 0 ;;
esac
/usr/bin/xattr -dr com.apple.quarantine "$SELF" 2>/dev/null

# 2) skripty a ikony do Application Support (aplikace je používají, i když se Dílna později aktualizuje)
/usr/bin/ditto "$RES/scripts" "$SUP/scripts" && chmod +x "$SUP/scripts/"*.sh
/usr/bin/ditto "$RES/icons" "$SUP/icons"
echo "$SELF" > "$SUP/dilna-app"
# nová verze Dílny → restart správce, ať čte nové balíčky
/usr/bin/curl -s -m 1 "http://127.0.0.1:7860/api/version" | grep -q '"dilna-manager"' && /usr/bin/pkill -f "$SUP/scripts/manager.py"

# 3) nativní okno (vlastní ikona v Docku). Potřebuje Apple nástroje příkazového řádku (swiftc).
SHELLBIN="$SUP/bin/DilnaShell"
SRC="$RES/shell/main.swift"
if [ ! -x "$SHELLBIN" ] || ! /usr/bin/cmp -s "$SRC" "$SUP/bin/main.swift"; then
  DEVDIR="$(/usr/bin/xcode-select -p 2>/dev/null)"
  if [ -n "$DEVDIR" ] && [ -d "$DEVDIR" ]; then
    note "Připravuji Dílnu, chvilku strpení…"
    if /usr/bin/xcrun swiftc -O -o "$SHELLBIN.new" "$SRC" -framework Cocoa -framework WebKit; then
      mv -f "$SHELLBIN.new" "$SHELLBIN" && cp "$SRC" "$SUP/bin/main.swift"
      echo "nativní okno sestaveno"
      # nové okno i pro už nainstalované aplikace (Titulkárna, Hlasovka)
      for B in "/Applications/Titulkárna.app" "/Applications/Hlasovka.app" "$HOME/Applications/Titulkárna.app" "$HOME/Applications/Hlasovka.app"; do
        [ -f "$B/Contents/MacOS/DilnaApp" ] && cp -f "$SHELLBIN" "$B/Contents/MacOS/DilnaApp" 2>/dev/null && chmod +x "$B/Contents/MacOS/DilnaApp"
      done
    else
      echo "sestavení nativního okna selhalo"
    fi
  else
    echo "chybí nástroje příkazového řádku – použiji okno Chrome"
  fi
fi

if [ -x "$SHELLBIN" ] && /bin/bash "$SUP/scripts/make_bundle.sh" convert "$SELF" "Dílna" "cz.dilna.app" "$SUP/scripts/start_dilna.sh"; then
  # spustit rovnou nativní okno ve stejném procesu (Dock pak ukazuje ikonu Dílny)
  exec "$SELF/Contents/MacOS/DilnaApp"
fi

# 4) záloha: okno v Chrome
OUT="$(/bin/bash "$SUP/scripts/start_dilna.sh")"
URL="$(printf '%s\n' "$OUT" | sed -n 's/^URL //p' | tail -1)"
[ -n "$URL" ] || { alert "Dílnu se nepodařilo spustit: $(printf '%s' "$OUT" | tail -n 2 | tr '"' "'")"; exit 1; }
/bin/bash "$SUP/scripts/open_window.sh" "$URL" "$SUP/okno"
