.PHONY: help start stop restart logs config clean

# Archivo de configuración
ENV_FILE := .env

help: ## Mostrar esta ayuda
	@echo "Comandos disponibles:"
	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "  \033[36m%-15s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)

config: ## Generar config.js desde variables de entorno
	@if [ ! -f $(ENV_FILE) ]; then \
		echo "Error: Archivo .env no encontrado. Copia .env.example a .env y configura las variables."; \
		exit 1; \
	fi
	@echo "Generando config.js desde variables de entorno..."
	@bash -c 'source $(ENV_FILE) && sed "s|\$${RADICALE_USERNAME}|$$RADICALE_USERNAME|g; s|\$${RADICALE_PASSWORD}|$$RADICALE_PASSWORD|g; s|\$${RADICALE_BASE_URL}|$$RADICALE_BASE_URL|g; s|\$${INFCLOUD_BASE_URL}|$$INFCLOUD_BASE_URL|g" infcloud_config/config.js.template > infcloud_config/config.js'
	@echo "✅ Config.js generado exitosamente"

start: config ## Generar configuración e iniciar servicios
	docker compose up -d

stop: ## Detener servicios
	docker compose down

restart: ## Reiniciar servicios
	docker compose down && docker compose up -d

logs: ## Mostrar logs de todos los servicios
	docker compose logs -f

logs-infcloud: ## Mostrar logs solo de InfCloud
	docker compose logs -f infcloud

logs-radicale: ## Mostrar logs solo de Radicale
	docker compose logs -f radicale

status: ## Mostrar estado de los servicios
	@echo "=== Estado de servicios ==="
	@docker compose ps
	@echo ""
	@echo "=== URLs de acceso ==="
	@bash -c 'source $(ENV_FILE) && echo "InfCloud: http://localhost:$$INFCLOUD_PORT/"'
	@bash -c 'source $(ENV_FILE) && echo "Radicale: http://localhost:$$RADICALE_PORT/"'

test-connection: ## Probar conexión con Radicale
	@bash -c 'source $(ENV_FILE) && curl -u "$$RADICALE_USERNAME:$$RADICALE_PASSWORD" -X PROPFIND "http://localhost:$$RADICALE_PORT/$$RADICALE_USERNAME/" -H "Depth: 0" -v 2>&1 | grep "< HTTP"'

clean: ## Limpiar configuración generada
	rm -f infcloud_config/config.js

setup: ## Configuración inicial (copia .env.example a .env)
	@if [ ! -f $(ENV_FILE) ]; then \
		cp .env.example $(ENV_FILE); \
		echo "✅ Archivo .env creado desde .env.example"; \
		echo "📝 Edita el archivo .env con tus credenciales antes de continuar"; \
	else \
		echo "⚠️  El archivo .env ya existe"; \
	fi