.PHONY: install install-project install-global validate clean help

# 🏆 El Primor — Makefile

SKILLS := el-primor escucha-profunda investigacion-actualizada planificacion-granular \
          verificacion-rigurosa simplificacion-codigo quality-gates seguridad-primor \
          perfil-usuario refactorizacion-excelente debug-forense

help: ## Muestra esta ayuda
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "  \033[36m%-20s\033[0m %s\n", $$1, $$2}'

install: install-project ## Instala en el proyecto actual (por defecto)

install-project: ## Instala El Primor en el proyecto actual (./.opencode/)
	@echo "📦 Instalando El Primor en $(PWD)..."
	@if [ -f .opencode/agents/el-primor.md ]; then \
		echo "✅ El Primor ya está instalado. Usa 'make validate' para verificarlo."; \
	else \
		mkdir -p .opencode/agents .opencode/skills .opencode/instructions; \
		cp .opencode/agents/el-primor.md .opencode/agents/ 2>/dev/null || true; \
		for skill in $(SKILLS); do \
			cp -r .opencode/skills/$$skill .opencode/skills/ 2>/dev/null || true; \
		done; \
		cp .opencode/instructions/PRIMOR.md .opencode/instructions/ 2>/dev/null || true; \
		cp .opencode/opencode.json .opencode/ 2>/dev/null || true; \
		echo "✅ El Primor instalado"; \
	fi
	@echo ""
	@echo "📋 Para usar en OpenCode:"
	@echo "  Clona el repo → ábrelo en OpenCode → ya funciona. Sin configuración."
	@echo ""
	@echo "📋 11 skills instaladas: $(SKILLS)"

install-global: ## Instala El Primor globalmente (~/.config/opencode/)
	@echo "📦 Instalando El Primor globalmente..."
	@mkdir -p ~/.config/opencode/agents ~/.config/opencode/skills ~/.config/opencode/instructions
	@cp .opencode/agents/el-primor.md ~/.config/opencode/agents/
	@for skill in $(SKILLS); do \
		cp -r .opencode/skills/$$skill ~/.config/opencode/skills/ 2>/dev/null || true; \
	done
	@cp .opencode/instructions/PRIMOR.md ~/.config/opencode/instructions/
	@echo "✅ El Primor instalado globalmente"
	@echo "   Agente: ~/.config/opencode/agents/el-primor.md"
	@echo "   Skills: 11 disponibles en ~/.config/opencode/skills/"

validate: ## Verifica la instalación
	@echo "🔍 Verificando instalación de El Primor..."
	@errors=0; \
	echo "Archivos core:"; \
	for file in \
		".opencode/agents/el-primor.md" \
		".opencode/instructions/PRIMOR.md" \
		".opencode/opencode.json" \
		"AGENTS.md" \
		"SOUL.md" \
		"README.md" \
		"CHANGELOG.md" \
		"LICENSE" \
		"CONTRIBUTING.md" \
		"Makefile"; do \
		if [ -f "$$file" ]; then \
			echo "  ✅ $$file"; \
		else \
			echo "  ❌ $$file — NO ENCONTRADO"; \
			errors=$$((errors+1)); \
		fi; \
	done; \
	echo ""; \
	echo "Skills:"; \
	for skill in $(SKILLS); do \
		if [ -f ".opencode/skills/$$skill/SKILL.md" ]; then \
			echo "  ✅ $$skill"; \
		else \
			echo "  ❌ $$skill — NO ENCONTRADO"; \
			errors=$$((errors+1)); \
		fi; \
	done; \
	echo ""; \
	if [ $$errors -eq 0 ]; then \
		echo "🏆 El Primor — instalación verificada (10 core + 11 skills)"; \
	else \
		echo "⚠️  $$errors archivo(s) faltante(s)"; \
		exit 1; \
	fi

clean: ## Elimina archivos de instalación del proyecto actual
	@if [ -f AGENTS.md ] && [ -f SOUL.md ] && [ -f README.md ]; then \
		echo "⚠️  Estás en el repositorio de El Primor. 'make clean' no se ejecuta aquí."; \
		echo "   Solo en proyectos donde hayas instalado El Primor."; \
	else \
		echo "🧹 Limpiando instalación local de El Primor..."; \
		rm -f .opencode/agents/el-primor.md; \
		for skill in $(SKILLS); do \
			rm -rf .opencode/skills/$$skill 2>/dev/null || true; \
		done; \
		rm -f .opencode/instructions/PRIMOR.md; \
		echo "✅ Limpieza completada"; \
	fi
