#!/bin/bash
# ============================================================================
# CC Box Launcher v1.0 - Linux
# ============================================================================
# 
# Questo launcher:
# - Chiude eventuali istanze di CC Box già in esecuzione
# - Trova e avvia automaticamente l'ultima versione di CC Box AppImage
# - Cancella le versioni vecchie per risparmiare spazio disco
# - Mantiene un nome fisso per l'avvio automatico
#
# Uso: 
#   1. Posiziona questo file nella stessa cartella dei file CC_Box-*-x86_64.AppImage
#   2. Rendi eseguibile: chmod +x CC_Box_Launcher.sh
#   3. Crea un collegamento a questo file per l'avvio automatico
#   4. Non spostare o rinominare questo file
#
# ============================================================================

# Cambia directory alla posizione dello script
cd "$(dirname "$0")"

echo "================================================"
echo "CC Box Launcher v1.0"
echo "================================================"
echo

# Chiudi tutte le istanze di CC Box in esecuzione
echo "[CLEANUP] Chiusura istanze CC Box in esecuzione..."
KILLED=0

# Prima tenta un kill normale (SIGTERM) per permettere chiusura pulita
for PID in $(pgrep -f "CC_Box.*x86_64.AppImage"); do
    echo "[KILL] Invio SIGTERM a processo PID: $PID"
    kill "$PID" 2>/dev/null
    KILLED=1
done

# Attendi un momento per chiusura pulita
if [ $KILLED -eq 1 ]; then
    sleep 2
    # Verifica se ci sono ancora processi attivi
    REMAINING_COUNT=$(pgrep -f "CC_Box.*x86_64.AppImage" 2>/dev/null | wc -l | tr -d ' ')
    if [ -n "$REMAINING_COUNT" ] && [ "$REMAINING_COUNT" -gt 0 ]; then
        echo "[KILL] Alcuni processi ancora attivi, uso SIGKILL..."
        for PID in $(pgrep -f "CC_Box.*x86_64.AppImage" 2>/dev/null); do
            echo "[KILL] Invio SIGKILL a processo PID: $PID"
            kill -9 "$PID" 2>/dev/null
        done
        sleep 1
    fi
fi

if [ $KILLED -eq 0 ]; then
    echo "[INFO] Nessuna istanza in esecuzione"
else
    echo "[OK] Istanze precedenti chiuse"
fi
echo

# Array per contenere tutti i file trovati, ordinati per data (più recente prima)
mapfile -t FILES < <(ls -t CC_Box-*-x86_64.AppImage 2>/dev/null)

# Verifica che sia stato trovato almeno un file
if [ ${#FILES[@]} -eq 0 ]; then
    echo "[ERRORE] Nessun AppImage CC Box trovato!"
    echo
    echo "Verifica che nella cartella ci sia almeno un file:"
    echo "  CC_Box-X.X.X-x86_64.AppImage"
    echo
    echo "Questa cartella contiene:"
    ls -la
    echo
    read -p "Premi INVIO per chiudere..."
    exit 1
fi

# Il primo file è il più recente
LATEST="${FILES[0]}"
echo "[INFO] Versione più recente trovata: $LATEST"

# Rimuovi tutti gli altri file (vecchie versioni)
if [ ${#FILES[@]} -gt 1 ]; then
    echo
    for ((i=1; i<${#FILES[@]}; i++)); do
        OLD_FILE="${FILES[$i]}"
        echo "[PULIZIA] Rimozione versione vecchia: $OLD_FILE"
        
        if rm -f "$OLD_FILE" 2>/dev/null; then
            echo "[OK] Rimossa con successo"
        else
            echo "[WARN] Impossibile rimuovere: $OLD_FILE (potrebbe essere in uso)"
        fi
    done
fi

echo
echo "================================================"
echo "Avvio CC Box: $LATEST"
echo "================================================"
echo

# Rendi eseguibile l'AppImage
chmod +x "$LATEST"

# Verifica se il file è eseguibile
if [ ! -x "$LATEST" ]; then
    echo "[ERRORE] Impossibile rendere eseguibile: $LATEST"
    echo
    read -p "Premi INVIO per chiudere..."
    exit 1
fi

# Avvia l'applicazione in background
./"$LATEST" &

# Ottieni il PID del processo avviato
APP_PID=$!

# Verifica se l'avvio è riuscito
if [ $? -eq 0 ]; then
    echo "Applicazione avviata con successo (PID: $APP_PID)"
    echo "Questa finestra si chiuderà automaticamente tra 2 secondi..."
    sleep 2
    exit 0
else
    echo "[ERRORE] Impossibile avviare l'applicazione!"
    echo
    read -p "Premi INVIO per chiudere..."
    exit 1
fi

