#!/bin/bash

# Couleurs pour les messages
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${BLUE}=== Surveillance des fichiers activée ===${NC}"
echo -e "${YELLOW}Appuyez sur Ctrl+C pour arrêter${NC}\n"

# Fonction pour générer le site
generate_site() {
    echo -e "${GREEN}[$(date +%H:%M:%S)] Changement détecté, régénération du site...${NC}"
    ./script.sh
    echo -e "${GREEN}[$(date +%H:%M:%S)] Régénération terminée${NC}\n"
}

# Générer le site au démarrage
generate_site

# Démarrer le serveur HTTP en arrière-plan
echo -e "${BLUE}Démarrage du serveur HTTP sur http://localhost:8080${NC}\n"
cd public
python3 -m http.server 8080 &
SERVER_PID=$!
cd ..

# Fonction de nettoyage à l'arrêt
cleanup() {
    echo -e "\n${YELLOW}Arrêt du serveur HTTP...${NC}"
    kill $SERVER_PID 2>/dev/null
    exit 0
}

trap cleanup SIGINT SIGTERM

# Surveiller les changements avec inotifywait
if command -v inotifywait &> /dev/null; then
    # Utiliser inotify si disponible (plus performant)
    while true; do
        inotifywait -q -r -e modify,create,delete \
            --exclude '(public|\.git)' \
            src/ templates/ assets/ script.sh
        generate_site
    done
else
    # Fallback: surveillance par polling
    echo -e "${YELLOW}inotify-tools non installé, utilisation du mode polling${NC}"
    echo -e "${YELLOW}Pour de meilleures performances: sudo apt-get install inotify-tools${NC}\n"

    # Calculer les checksums initiaux
    get_checksums() {
        find src templates assets script.sh -type f 2>/dev/null | sort | xargs md5sum 2>/dev/null
    }

    previous_checksums=$(get_checksums)

    while true; do
        sleep 2
        current_checksums=$(get_checksums)

        if [ "$current_checksums" != "$previous_checksums" ]; then
            generate_site
            previous_checksums=$(get_checksums)
        fi
    done
fi
