# Makefile pour le serveur NationsGlory
# Usage: make [commande]

.PHONY: help start stop restart logs status backup restore migrate clean

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

help: ## Affiche cette aide
	@echo "$(BLUE)╔══════════════════════════════════════════════════════════════════╗$(NC)"
	@echo "$(BLUE)║        🎮 Serveur NationsGlory - Commandes disponibles          ║$(NC)"
	@echo "$(BLUE)╚══════════════════════════════════════════════════════════════════╝$(NC)"
	@echo ""
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  $(GREEN)%-15s$(NC) %s\n", $$1, $$2}'
	@echo ""

start: ## Démarrer le serveur
	@echo "$(BLUE)🚀 Démarrage du serveur NationsGlory...$(NC)"
	@docker-compose up -d
	@echo "$(GREEN)✅ Serveur démarré !$(NC)"
	@echo "$(YELLOW)Voir les logs: make logs$(NC)"

stop: ## Arrêter le serveur
	@echo "$(BLUE)🛑 Arrêt du serveur...$(NC)"
	@docker-compose down
	@echo "$(GREEN)✅ Serveur arrêté$(NC)"

restart: ## Redémarrer le serveur
	@echo "$(BLUE)🔄 Redémarrage du serveur...$(NC)"
	@docker-compose restart
	@echo "$(GREEN)✅ Serveur redémarré$(NC)"

logs: ## Afficher les logs en temps réel
	@docker-compose logs -f --tail=100

status: ## Afficher l'état du serveur
	@echo "$(BLUE)📊 État du serveur:$(NC)"
	@docker-compose ps
	@echo ""
	@echo "$(BLUE)💾 Utilisation des ressources:$(NC)"
	@docker stats --no-stream mc-nationsglory 2>/dev/null || echo "Serveur non démarré"

shell: ## Ouvrir un shell dans le conteneur
	@docker-compose exec nationsglory-modded bash

console: ## Se connecter à la console serveur (RCON)
	@docker-compose exec nationsglory-modded rcon-cli

backup: ## Créer une sauvegarde du monde
	@echo "$(BLUE)💾 Création d'un backup...$(NC)"
	@mkdir -p backups
	@docker-compose exec -T nationsglory-modded rcon-cli save-all flush || true
	@sleep 3
	@tar -czf backups/world-$$(date +%Y%m%d-%H%M).tar.gz data/world/ data/ops.txt data/white-list.txt 2>/dev/null
	@echo "$(GREEN)✅ Backup créé: backups/world-$$(date +%Y%m%d-%H%M).tar.gz$(NC)"

list-backups: ## Lister les sauvegardes
	@echo "$(BLUE)📦 Sauvegardes disponibles:$(NC)"
	@ls -lh backups/*.tar.gz 2>/dev/null || echo "Aucune sauvegarde"

clean-logs: ## Nettoyer les anciens logs
	@echo "$(BLUE)🧹 Nettoyage des logs...$(NC)"
	@rm -f data/logs/*.log.gz
	@rm -f data/*.log.*
	@echo "$(GREEN)✅ Logs nettoyés$(NC)"

clean-backups: ## Supprimer les backups > 7 jours
	@echo "$(BLUE)🧹 Nettoyage des anciens backups...$(NC)"
	@find backups/ -name "*.tar.gz" -mtime +7 -delete 2>/dev/null || true
	@echo "$(GREEN)✅ Anciens backups supprimés$(NC)"

update: ## Mettre à jour l'image Docker
	@echo "$(BLUE)🔄 Mise à jour de l'image Docker...$(NC)"
	@docker-compose pull
	@echo "$(GREEN)✅ Image mise à jour$(NC)"
	@echo "$(YELLOW)Redémarrer avec: make restart$(NC)"

migrate: ## Migrer le serveur vers /srv/minecraft
	@echo "$(BLUE)🚀 Migration vers /srv/minecraft...$(NC)"
	@sudo ./migrate-to-srv.sh

reset-world: ## Réinitialiser le monde (⚠️ DESTRUCTIF)
	@echo "$(YELLOW)⚠️  ATTENTION: Cette opération va supprimer le monde actuel !$(NC)"
	@read -p "Continuer? [y/N] " -n 1 -r; \
	echo ""; \
	if [[ $$REPLY =~ ^[Yy]$$ ]]; then \
		echo "$(BLUE)💾 Backup du monde actuel...$(NC)"; \
		tar -czf backups/world-before-reset-$$(date +%Y%m%d-%H%M).tar.gz data/world/ 2>/dev/null; \
		echo "$(BLUE)🛑 Arrêt du serveur...$(NC)"; \
		docker-compose down; \
		echo "$(BLUE)🗑️  Suppression du monde...$(NC)"; \
		sudo rm -rf data/world/; \
		echo "$(BLUE)🚀 Redémarrage...$(NC)"; \
		docker-compose up -d; \
		echo "$(GREEN)✅ Nouveau monde généré$(NC)"; \
	else \
		echo "$(YELLOW)Annulé$(NC)"; \
	fi

stats: ## Statistiques du serveur
	@echo "$(BLUE)📊 Statistiques:$(NC)"
	@echo "  - Taille totale: $$(du -sh . | cut -f1)"
	@echo "  - Mods: $$(ls -1 mods/*.jar 2>/dev/null | wc -l) fichiers"
	@echo "  - Plugins: $$(ls -1 plugins/*.jar 2>/dev/null | wc -l) fichiers"
	@echo "  - Monde: $$(du -sh data/world 2>/dev/null | cut -f1 || echo '0')"
	@echo "  - Backups: $$(ls -1 backups/*.tar.gz 2>/dev/null | wc -l || echo '0')"
	@echo ""
	@echo "$(BLUE)🐳 Docker:$(NC)"
	@docker stats --no-stream mc-nationsglory 2>/dev/null || echo "  Serveur non démarré"

fix-permissions: ## Réparer les permissions des fichiers
	@echo "$(BLUE)🔐 Réparation des permissions...$(NC)"
	@sudo chown -R 1000:1000 .
	@sudo chmod -R 755 .
	@echo "$(GREEN)✅ Permissions corrigées$(NC)"

check: ## Vérifier la configuration
	@echo "$(BLUE)🔍 Vérification de la configuration...$(NC)"
	@test -f docker-compose.yml && echo "  ✅ docker-compose.yml" || echo "  ❌ docker-compose.yml manquant"
	@test -f .env && echo "  ✅ .env" || echo "  ⚠️  .env manquant (copier .env.example)"
	@test -f data/mcpc.jar && echo "  ✅ mcpc.jar" || echo "  ❌ mcpc.jar manquant"
	@test -d mods && echo "  ✅ mods/ ($$(ls -1 mods/*.jar 2>/dev/null | wc -l) fichiers)" || echo "  ❌ mods/ manquant"
	@test -d plugins && echo "  ✅ plugins/ ($$(ls -1 plugins/*.jar 2>/dev/null | wc -l) fichiers)" || echo "  ❌ plugins/ manquant"
	@echo ""
	@command -v docker >/dev/null 2>&1 && echo "  ✅ Docker installé" || echo "  ❌ Docker non installé"
	@command -v docker-compose >/dev/null 2>&1 && echo "  ✅ Docker Compose installé" || echo "  ❌ Docker Compose non installé"
