# Makefile pour Skull Pi
# Usage: make install, make status, make logs, etc.

PROJECT_DIR = /opt/Skull
SYSTEMD_DIR = /etc/systemd/system
SERVICE_PREFIX = skull

# Détection automatique de l'utilisateur configuré pour Skull Pi
SKULL_USER := $(shell if [ -f "$(PROJECT_DIR)/config/.env" ]; then stat -c %U "$(PROJECT_DIR)/config/.env"; elif [ -d "$(PROJECT_DIR)" ]; then stat -c %U "$(PROJECT_DIR)"; else echo "$(USER)"; fi)
SKULL_USER_HOME := $(shell getent passwd "$(SKULL_USER)" 2>/dev/null | cut -d: -f6 || echo "/home/$(SKULL_USER)")

.PHONY: help install clean status logs restart stop start reboot test-mqtt backup user-info

help:
	@echo "🏴‍☠️ Makefile Skull Pi"
	@echo ""
	@echo "Cibles disponibles:"
	@echo "  install      - Installation complète du système"
	@echo "  clean        - Nettoyage des logs et arrêt des services"
	@echo "  status       - Affichage du statut des services"
	@echo "  logs         - Affichage des logs en temps réel"
	@echo "  restart      - Redémarrage de tous les services"
	@echo "  stop         - Arrêt de tous les services"
	@echo "  start        - Démarrage de tous les services"
	@echo "  reboot       - Redémarrage système complet"
	@echo "  test-mqtt    - Test de la connectivité MQTT"
	@echo "  fix-mosquitto - Correction de la configuration Mosquitto"
	@echo "  backup       - Sauvegarde de la configuration"
	@echo "  user-info    - Informations sur l'utilisateur configuré"
	@echo "  diagnose     - Diagnostic utilisateur complet"
	@echo ""
	@echo "👤 Utilisateur configuré: $(SKULL_USER)"

user-info:
	@echo "👤 Informations utilisateur Skull Pi:"
	@echo "  - Utilisateur: $(SKULL_USER)"
	@echo "  - Home: $(SKULL_USER_HOME)"
	@echo "  - UID: $(id -u $(SKULL_USER) 2>/dev/null || echo 'N/A')"
	@echo "  - Propriétaire /opt/Skull: $(stat -c %U $(PROJECT_DIR) 2>/dev/null || echo 'N/A')"

install:
	@echo "🚀 Lancement de l'installation..."
	@sudo bash install.sh

clean:
	@echo "🧹 Nettoyage du système..."
	@sudo systemctl stop $(SERVICE_PREFIX).target 2>/dev/null || true
	@sudo rm -f $(PROJECT_DIR)/logs/*.log
	@sudo systemctl reset-failed

status:
	@echo "📊 Statut des services Skull Pi (utilisateur: $(SKULL_USER)):"
	@echo "============================================================="
	@sudo systemctl status $(SERVICE_PREFIX).target --no-pager -l || true
	@echo ""
	@echo "📈 Utilisation système:"
	@echo "CPU: $(cat /proc/loadavg | cut -d' ' -f1-3)"
	@echo "RAM: $(free -h | grep Mem | awk '{print $3"/"$2}')"
	@echo "Température: $(vcgencmd measure_temp 2>/dev/null || echo 'N/A')"
	@echo "Propriétaire: $(stat -c %U $(PROJECT_DIR) 2>/dev/null || echo 'N/A')"

logs:
	@echo "📋 Logs des services Skull Pi (Ctrl+C pour quitter):"
	@sudo journalctl -f -u $(SERVICE_PREFIX)-orchestrator -u $(SERVICE_PREFIX)-motion -u $(SERVICE_PREFIX)-vision -u $(SERVICE_PREFIX)-voice -u $(SERVICE_PREFIX)-audioin -u $(SERVICE_PREFIX)-asr -u $(SERVICE_PREFIX)-ai

restart:
	@echo "🔄 Redémarrage des services..."
	@sudo systemctl restart $(SERVICE_PREFIX).target
	@sleep 2
	@make status

stop:
	@echo "⏹️ Arrêt des services..."
	@sudo systemctl stop $(SERVICE_PREFIX).target

start:
	@echo "▶️ Démarrage des services..."
	@sudo systemctl start $(SERVICE_PREFIX).target
	@sleep 2
	@make status

reboot:
	@echo "🔄 Redémarrage système dans 5 secondes..."
	@sleep 5
	@sudo reboot

test-mqtt:
	@echo "🔍 Test de connectivité MQTT..."
	@echo "Services capabilities:"
	@timeout 5 mosquitto_sub -h 127.0.0.1 -t '+/capabilities' -v || echo "Timeout - vérifiez que Mosquitto fonctionne"
	@echo ""
	@echo "Test de publication:"
	@mosquitto_pub -h 127.0.0.1 -t 'test/makefile' -m 'Hello from Makefile'
	@echo "Message publié sur test/makefile"

backup:
	@echo "💾 Sauvegarde de la configuration (utilisateur: $(SKULL_USER))..."
	@mkdir -p "$(SKULL_USER_HOME)/skull-backup-$(date +%Y%m%d-%H%M%S)"
	@cp -r $(PROJECT_DIR)/config "$(SKULL_USER_HOME)/skull-backup-$(date +%Y%m%d-%H%M%S)/"
	@cp $(SYSTEMD_DIR)/$(SERVICE_PREFIX)* "$(SKULL_USER_HOME)/skull-backup-$(date +%Y%m%d-%H%M%S)/" 2>/dev/null || echo "Services systemd copiés partiellement"
	@cp /etc/mosquitto/conf.d/skull.conf "$(SKULL_USER_HOME)/skull-backup-$(date +%Y%m%d-%H%M%S)/" 2>/dev/null || echo "Config Mosquitto non trouvée"
	@cp /etc/sudoers.d/skull "$(SKULL_USER_HOME)/skull-backup-$(date +%Y%m%d-%H%M%S)/" 2>/dev/null || echo "Config sudoers non trouvée"
	@chown -R $(SKULL_USER):$(SKULL_USER) "$(SKULL_USER_HOME)/skull-backup-"* 2>/dev/null || echo "Permissions ajustées"
	@echo "Sauvegarde créée dans $(SKULL_USER_HOME)/skull-backup-*"

# Diagnostic et réparation
diagnose:
	@echo "🔍 Diagnostic utilisateur..."
	@bash diagnose_user.sh 2>/dev/null || echo "Script diagnose_user.sh non trouvé"

fix-permissions:
	@echo "🔧 Correction des permissions pour $(SKULL_USER)..."
	@sudo chown -R $(SKULL_USER):$(SKULL_USER) $(PROJECT_DIR)
	@echo "Permissions corrigées pour $(SKULL_USER)"

# Cibles pour services individuels
restart-orchestrator:
	@sudo systemctl restart $(SERVICE_PREFIX)-orchestrator

restart-motion:
	@sudo systemctl restart $(SERVICE_PREFIX)-motion

restart-vision:
	@sudo systemctl restart $(SERVICE_PREFIX)-vision

restart-voice:
	@sudo systemctl restart $(SERVICE_PREFIX)-voice

restart-audioin:
	@sudo systemctl restart $(SERVICE_PREFIX)-audioin

restart-asr:
	@sudo systemctl restart $(SERVICE_PREFIX)-asr

restart-ai:
	@sudo systemctl restart $(SERVICE_PREFIX)-ai