#!/bin/bash

# Script di gestione per Chrome Remote Server
# Utilizzo: ./manage.sh [start|stop|restart|status|logs|install]

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SERVER_NAME="chrome-remote-server"
PID_FILE="$SCRIPT_DIR/server.pid"
LOG_FILE="$SCRIPT_DIR/server.log"

# Leggi la porta dall'environment o usa il default
CHROME_REMOTE_PORT=${CHROME_REMOTE_PORT:-9221}

cd "$SCRIPT_DIR"

case "$1" in
    install)
        echo "📦 Installazione dipendenze Chrome Remote Server..."
        if command -v npm >/dev/null 2>&1; then
            npm install
            echo "✅ Dipendenze installate con successo!"
        else
            echo "❌ npm non trovato. Installa Node.js prima di continuare."
            exit 1
        fi
        ;;
        
    start)
        if [ -f "$PID_FILE" ]; then
            PID=$(cat "$PID_FILE")
            if kill -0 "$PID" 2>/dev/null; then
                echo "⚠️  Chrome Remote Server già in esecuzione (PID: $PID)"
                exit 1
            else
                rm -f "$PID_FILE"
            fi
        fi
        
        echo "🚀 Avvio Chrome Remote Server..."
        nohup node server.js > "$LOG_FILE" 2>&1 &
        SERVER_PID=$!
        echo $SERVER_PID > "$PID_FILE"
        
        # Attendi un momento per verificare che si sia avviato correttamente
        sleep 2
        if kill -0 "$SERVER_PID" 2>/dev/null; then
            echo "✅ Chrome Remote Server avviato (PID: $SERVER_PID)"
            echo "📊 Porta: $CHROME_REMOTE_PORT"
            echo "📝 Log: $LOG_FILE"
        else
            echo "❌ Errore nell'avvio del server"
            rm -f "$PID_FILE"
            exit 1
        fi
        ;;
        
    stop)
        if [ -f "$PID_FILE" ]; then
            PID=$(cat "$PID_FILE")
            if kill -0 "$PID" 2>/dev/null; then
                echo "🛑 Arresto Chrome Remote Server (PID: $PID)..."
                kill "$PID"
                
                # Attendi che il processo termini
                for i in {1..10}; do
                    if ! kill -0 "$PID" 2>/dev/null; then
                        break
                    fi
                    sleep 1
                done
                
                # Se non si è fermato, forza la terminazione
                if kill -0 "$PID" 2>/dev/null; then
                    echo "⚠️  Forzatura terminazione..."
                    kill -9 "$PID"
                fi
                
                rm -f "$PID_FILE"
                echo "✅ Chrome Remote Server arrestato"
            else
                echo "⚠️  Chrome Remote Server non in esecuzione"
                rm -f "$PID_FILE"
            fi
        else
            echo "⚠️  File PID non trovato. Server probabilmente non in esecuzione."
            
            # Cerca e termina eventuali processi rimasti
            pkill -f "node.*server.js" && echo "🧹 Processi residui terminati"
        fi
        ;;
        
    restart)
        echo "🔄 Riavvio Chrome Remote Server..."
        "$SCRIPT_DIR/manage.sh" stop
        sleep 2
        "$SCRIPT_DIR/manage.sh" start
        ;;
        
    status)
        if [ -f "$PID_FILE" ]; then
            PID=$(cat "$PID_FILE")
            if kill -0 "$PID" 2>/dev/null; then
                echo "✅ Chrome Remote Server in esecuzione (PID: $PID)"
                
                # Prova a fare una richiesta di health check
                if command -v curl >/dev/null 2>&1; then
                    echo "🔍 Health check..."
                    curl -s "http://localhost:$CHROME_REMOTE_PORT/health" | head -1 || echo "❌ Server non risponde"
                fi
            else
                echo "❌ Chrome Remote Server non in esecuzione (PID stale: $PID)"
                rm -f "$PID_FILE"
            fi
        else
            echo "❌ Chrome Remote Server non in esecuzione"
        fi
        ;;
        
    logs)
        if [ -f "$LOG_FILE" ]; then
            echo "📝 Log Chrome Remote Server:"
            echo "=========================="
            tail -f "$LOG_FILE"
        else
            echo "📝 File di log non trovato: $LOG_FILE"
        fi
        ;;
        
    *)
        echo "Chrome Remote Server - Script di gestione"
        echo ""
        echo "Utilizzo: $0 {install|start|stop|restart|status|logs}"
        echo ""
        echo "Comandi:"
        echo "  install  - Installa le dipendenze npm"
        echo "  start    - Avvia il server"
        echo "  stop     - Arresta il server"
        echo "  restart  - Riavvia il server"
        echo "  status   - Mostra lo stato del server"
        echo "  logs     - Mostra i log in tempo reale"
        echo ""
        exit 1
        ;;
esac