include .env
export

# Compose file selection based on ENVIRONMENT
ifeq ($(ENVIRONMENT),dev)
  COMPOSE_FILES := -f docker-compose.yml -f docker-compose.dev.yml
else
  COMPOSE_FILES := -f docker-compose.yml
endif

DC := docker compose $(COMPOSE_FILES)

.PHONY: help build up down restart logs status clean rebuild dev prod

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

build: ## Build container image
	$(DC) build

up: ## Start services (detached)
	$(DC) up -d --build
	@sleep 2
	$(DC) logs --tail=20

down: ## Stop services
	$(DC) down

restart: ## Restart services
	$(DC) down
	$(DC) up -d --build
	@sleep 2
	$(DC) logs --tail=20

logs: ## Show service logs
	$(DC) logs -f

status: ## Show running containers
	$(DC) ps

clean: ## Remove containers, images, and volumes
	$(DC) down --rmi local -v

rebuild: ## Full rebuild (no cache)
	$(DC) build --no-cache
	$(DC) up -d
	@sleep 2
	$(DC) logs --tail=20

dev: ## Switch to dev mode and start
	@sed -i 's/^ENVIRONMENT=.*/ENVIRONMENT=dev/' .env
	@echo "Switched to dev mode"
	$(MAKE) restart

prod: ## Switch to prod mode and start
	@sed -i 's/^ENVIRONMENT=.*/ENVIRONMENT=prod/' .env
	@echo "Switched to prod mode"
	$(MAKE) restart
