# Makefile для LogBoard+
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru

.PHONY: help build up down restart logs clean status ps shell

# Переменные
COMPOSE_FILE = docker-compose.yml
SERVICE_NAME = logboard

# Цвета для вывода
GREEN = \033[0;32m
YELLOW = \033[1;33m
RED = \033[0;31m
NC = \033[0m # No Color

help: ## Показать справку по командам
	@echo "$(GREEN)LogBoard+ - Команды управления$(NC)"
	@echo ""
	@echo "$(YELLOW)Основные команды:$(NC)"
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "  $(GREEN)%-15s$(NC) %s\n", $$1, $$2}'
	@echo ""
	@echo "$(YELLOW)Примеры использования:$(NC)"
	@echo "  make build    # Собрать образ"
	@echo "  make up       # Запустить сервисы"
	@echo "  make down     # Остановить сервисы"
	@echo "  make restart  # Перезапустить сервисы"
	@echo "  make logs     # Показать логи"

build: ## Собрать Docker образ
	@echo "$(GREEN)Сборка Docker образа...$(NC)"
	docker-compose -f $(COMPOSE_FILE) build --no-cache
	@echo "$(GREEN)Образ собран успешно!$(NC)"

up: ## Запустить сервисы в фоновом режиме
	@echo "$(GREEN)Запуск сервисов...$(NC)"
	docker-compose -f $(COMPOSE_FILE) up -d
	@echo "$(GREEN)Сервисы запущены!$(NC)"
	@echo "$(YELLOW)Приложение доступно по адресу: http://localhost:9001$(NC)"

down: ## Остановить и удалить сервисы
	@echo "$(YELLOW)Остановка сервисов...$(NC)"
	docker-compose -f $(COMPOSE_FILE) down
	@echo "$(GREEN)Сервисы остановлены!$(NC)"

restart: ## Перезапустить сервисы
	@echo "$(YELLOW)Перезапуск сервисов...$(NC)"
	docker-compose -f $(COMPOSE_FILE) restart
	@echo "$(GREEN)Сервисы перезапущены!$(NC)"

logs: ## Показать логи сервисов
	@echo "$(GREEN)Логи сервисов:$(NC)"
	docker-compose -f $(COMPOSE_FILE) logs -f

logs-tail: ## Показать последние 100 строк логов
	@echo "$(GREEN)Последние 100 строк логов:$(NC)"
	docker-compose -f $(COMPOSE_FILE) logs --tail=100

clean: ## Остановить сервисы и удалить образы
	@echo "$(RED)Очистка проекта...$(NC)"
	docker-compose -f $(COMPOSE_FILE) down --rmi all --volumes --remove-orphans
	@echo "$(GREEN)Очистка завершена!$(NC)"

status: ## Показать статус сервисов
	@echo "$(GREEN)Статус сервисов:$(NC)"
	docker-compose -f $(COMPOSE_FILE) ps

ps: status ## Алиас для команды status

shell: ## Подключиться к контейнеру сервиса
	@echo "$(GREEN)Подключение к контейнеру $(SERVICE_NAME)...$(NC)"
	docker-compose -f $(COMPOSE_FILE) exec $(SERVICE_NAME) /bin/bash

start: up ## Алиас для команды up

stop: down ## Алиас для команды down

dev: ## Запуск в режиме разработки (с выводом логов)
	@echo "$(GREEN)Запуск в режиме разработки...$(NC)"
	docker-compose -f $(COMPOSE_FILE) up --build

rebuild: ## Пересобрать и запустить сервисы
	@echo "$(YELLOW)Пересборка и запуск сервисов...$(NC)"
	docker-compose -f $(COMPOSE_FILE) down
	docker-compose -f $(COMPOSE_FILE) build --no-cache
	docker-compose -f $(COMPOSE_FILE) up -d
	@echo "$(GREEN)Сервисы пересобраны и запущены!$(NC)"
	@echo "$(YELLOW)Приложение доступно по адресу: http://localhost:9001$(NC)"
