# Veza Documentation Makefile
# Commandes pour la gestion de la documentation centralisée

.PHONY: help docs-discover docs-links docs-sidebars docs-build docs-serve docs-clean docs-all docs-check docs-sync docs-install update audit report test debug

# Variables
DOCS_ROOT := $(shell pwd)
SCRIPTS_DIR := $(DOCS_ROOT)/scripts
PROJECT_ROOT := $(shell dirname $(DOCS_ROOT))

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

help: ## Afficher l'aide
	@echo "$(GREEN)Veza Documentation - Commandes disponibles:$(NC)"
	@echo ""
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "  $(YELLOW)%-20s$(NC) %s\n", $$1, $$2}'
	@echo ""
	@echo "$(GREEN)Exemples d'utilisation:$(NC)"
	@echo "  make docs:all          # Migration complète et build"
	@echo "  make docs:serve        # Démarrer le serveur de développement"
	@echo "  make docs:build        # Build de production"

docs-discover: ## Découvrir et migrer tous les documents
	@echo "$(GREEN)🔍 Découverte et migration des documents...$(NC)"
	@cd $(SCRIPTS_DIR) && npx ts-node discover_and_migrate_docs.ts $(PROJECT_ROOT)
	@echo "$(GREEN)✅ Migration terminée!$(NC)"

docs-links: ## Réécrire tous les liens internes
	@echo "$(GREEN)🔗 Réécriture des liens...$(NC)"
	@cd $(SCRIPTS_DIR) && npx ts-node rewrite_links.ts $(DOCS_ROOT)
	@echo "$(GREEN)✅ Liens réécrits!$(NC)"

docs-sidebars: ## Générer les sidebars automatiquement
	@echo "$(GREEN)📚 Génération des sidebars...$(NC)"
	@cd $(SCRIPTS_DIR) && npx ts-node build_sidebars.ts $(DOCS_ROOT)
	@echo "$(GREEN)✅ Sidebars générés!$(NC)"

docs-build: ## Build de production Docusaurus
	@echo "$(GREEN)🏗️  Build de production...$(NC)"
	@npm run build
	@echo "$(GREEN)✅ Build terminé!$(NC)"

docs-serve: ## Démarrer le serveur de développement
	@echo "$(GREEN)🚀 Démarrage du serveur de développement...$(NC)"
	@echo "$(YELLOW)Le site sera disponible sur http://localhost:3000$(NC)"
	@npm start

docs-clean: ## Nettoyer les fichiers générés
	@echo "$(GREEN)🧹 Nettoyage...$(NC)"
	@rm -rf build/
	@rm -rf .docusaurus/
	@rm -rf current/domains/*/ vision/domains/*/
	@rm -rf _reports/
	@echo "$(GREEN)✅ Nettoyage terminé!$(NC)"

docs-all: docs-discover docs-links docs-sidebars ## Migration complète (discover + links + sidebars)
	@echo "$(GREEN)🎉 Migration complète terminée!$(NC)"

docs-sync: ## Synchroniser la documentation (re-découvrir et migrer)
	@echo "$(GREEN)🔄 Synchronisation de la documentation...$(NC)"
	@make docs-clean
	@make docs-all
	@echo "$(GREEN)✅ Synchronisation terminée!$(NC)"

docs-scan: ## Scan global de la documentation
	@echo "$(GREEN)🔍 Scan global de la documentation...$(NC)"
	@cd $(SCRIPTS_DIR) && npx ts-node global_scan.ts $(PROJECT_ROOT)
	@echo "$(GREEN)✅ Scan terminé!$(NC)"

docs-verify: ## Vérifier l'intégrité de la documentation
	@echo "$(GREEN)🔍 Vérification de l'intégrité...$(NC)"
	@cd $(SCRIPTS_DIR) && npx ts-node verify_integrity.ts $(DOCS_ROOT)
	@echo "$(GREEN)✅ Vérification terminée!$(NC)"

docs-cleanup-dry: ## Plan de nettoyage (dry-run)
	@echo "$(GREEN)🧹 Plan de nettoyage (dry-run)...$(NC)"
	@cd $(SCRIPTS_DIR) && npx ts-node cleanup_legacy.ts $(PROJECT_ROOT) --dry-run --backup
	@echo "$(GREEN)✅ Plan de nettoyage créé!$(NC)"

docs-cleanup-apply: ## Appliquer le nettoyage
	@echo "$(GREEN)🧹 Application du nettoyage...$(NC)"
	@cd $(SCRIPTS_DIR) && npx ts-node cleanup_legacy.ts $(PROJECT_ROOT) --apply
	@echo "$(GREEN)✅ Nettoyage appliqué!$(NC)"

docs-check: ## Vérifier l'état de la documentation
	@echo "$(GREEN)📊 État de la documentation:$(NC)"
	@echo ""
	@echo "$(YELLOW)Fichiers migrés:$(NC)"
	@find current/domains -name "*.md" | wc -l | xargs echo "  Current:"
	@find vision/domains -name "*.md" | wc -l | xargs echo "  Vision:"
	@echo ""
	@echo "$(YELLOW)Rapports disponibles:$(NC)"
	@ls -la _reports/ 2>/dev/null || echo "  Aucun rapport trouvé"
	@echo ""
	@echo "$(YELLOW)Sidebars:$(NC)"
	@ls -la current/sidebars.js vision/sidebars.js 2>/dev/null || echo "  Sidebars manquants"

docs-install: ## Installer les dépendances
	@echo "$(GREEN)📦 Installation des dépendances...$(NC)"
	@npm install
	@echo "$(GREEN)✅ Dépendances installées!$(NC)"

# Commandes de développement
dev: docs-serve ## Alias pour docs-serve

build: docs-build ## Alias pour docs-build

clean: docs-clean ## Alias pour docs-clean

# Commandes de déploiement
deploy: docs-build ## Build et déploiement
	@echo "$(GREEN)🚀 Déploiement...$(NC)"
	@npm run deploy
	@echo "$(GREEN)✅ Déploiement terminé!$(NC)"

# Commandes de maintenance
update: ## Mettre à jour les dépendances
	@echo "$(GREEN)🔄 Mise à jour des dépendances...$(NC)"
	@npm update
	@echo "$(GREEN)✅ Mise à jour terminée!$(NC)"

audit: ## Vérifier les vulnérabilités
	@echo "$(GREEN)🔍 Vérification des vulnérabilités...$(NC)"
	@npm audit
	@echo "$(GREEN)✅ Audit terminé!$(NC)"

# Commandes de rapport
report: ## Générer un rapport complet
	@echo "$(GREEN)📊 Génération du rapport complet...$(NC)"
	@make docs:check
	@echo ""
	@echo "$(YELLOW)Contenu des rapports:$(NC)"
	@cat _reports/migration_report.md 2>/dev/null || echo "Rapport de migration non trouvé"
	@echo ""
	@cat _reports/link_rewrite_report.md 2>/dev/null || echo "Rapport de liens non trouvé"

# Commandes de test
test: ## Tester la build
	@echo "$(GREEN)🧪 Test de la build...$(NC)"
	@make docs:build
	@echo "$(GREEN)✅ Test réussi!$(NC)"

# Commandes de debug
debug: ## Mode debug
	@echo "$(GREEN)🐛 Mode debug activé$(NC)"
	@echo "DOCS_ROOT: $(DOCS_ROOT)"
	@echo "PROJECT_ROOT: $(PROJECT_ROOT)"
	@echo "SCRIPTS_DIR: $(SCRIPTS_DIR)"
	@echo ""
	@echo "$(YELLOW)Structure des dossiers:$(NC)"
	@tree -L 3 -I 'node_modules|build|.docusaurus' || ls -la

# Commande par défaut
.DEFAULT_GOAL := help
