.PHONY: help build up down restart logs shell clean test lint

# По умолчанию показываем help
help:
	@echo "🤖 BUH Bot - Makefile команды:"
	@echo ""
	@echo "Development Docker:"
	@echo "  make build      - Собрать Docker образ"
	@echo "  make up         - Запустить бота (dev)"
	@echo "  make down       - Остановить бота"
	@echo "  make restart    - Перезапустить бота"
	@echo "  make logs       - Показать логи (Ctrl+C для выхода)"
	@echo "  make shell      - Войти в контейнер"
	@echo "  make ps         - Статус контейнера"
	@echo ""
	@echo "Production Docker:"
	@echo "  make prod-build - Собрать и опубликовать образ в registry"
	@echo "  make prod-up    - Запустить production stack"
	@echo "  make prod-down  - Остановить production stack"
	@echo "  make prod-logs  - Логи production"
	@echo "  make prod-ps    - Статус production"
	@echo ""
	@echo "Разработка:"
	@echo "  make test       - Запустить тесты"
	@echo "  make lint       - Проверить код (flake8)"
	@echo "  make clean      - Очистить временные файлы"
	@echo "  make backup     - Создать backup данных"
	@echo ""
	@echo "Локальная разработка:"
	@echo "  make venv       - Создать виртуальное окружение"
	@echo "  make install    - Установить зависимости"
	@echo "  make run        - Запустить бота локально"

# Docker команды
build:
	@echo "🔨 Сборка Docker образа..."
	docker-compose build --no-cache

up:
	@echo "🚀 Запуск бота..."
	@mkdir -p data logs temp_documents
	docker-compose up -d
	@echo "✅ Бот запущен!"
	@echo "📝 Логи: make logs"

down:
	@echo "🛑 Остановка бота..."
	docker-compose down
	@echo "✅ Бот остановлен"

restart:
	@echo "🔄 Перезапуск бота..."
	docker-compose restart
	@echo "✅ Бот перезапущен"

logs:
	@echo "📝 Логи бота (Ctrl+C для выхода):"
	docker-compose logs -f

shell:
	@echo "🐚 Вход в контейнер..."
	docker-compose exec buh_bot bash

ps:
	@echo "📊 Статус контейнера:"
	docker-compose ps

# Разработка
test:
	@echo "🧪 Запуск тестов..."
	python -m pytest tests/ -v

lint:
	@echo "🔍 Проверка кода..."
	flake8 bot.py modules/ --max-line-length=79

clean:
	@echo "🧹 Очистка временных файлов..."
	find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
	find . -type f -name "*.pyc" -delete 2>/dev/null || true
	find . -type f -name "*.pyo" -delete 2>/dev/null || true
	find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
	rm -rf .pytest_cache 2>/dev/null || true
	rm -rf htmlcov 2>/dev/null || true
	rm -rf temp_documents/* 2>/dev/null || true
	@echo "✅ Очистка завершена"

backup:
	@echo "💾 Создание backup..."
	@mkdir -p backups
	tar -czf backups/backup-$$(date +%Y%m%d-%H%M%S).tar.gz data/ logs/
	@echo "✅ Backup создан в backups/"

# Локальная разработка
venv:
	@echo "🐍 Создание виртуального окружения..."
	python3 -m venv venv
	@echo "✅ Виртуальное окружение создано"
	@echo "Активируйте: source venv/bin/activate"

install:
	@echo "📦 Установка зависимостей..."
	pip install -r requirements.txt
	@echo "✅ Зависимости установлены"

run:
	@echo "🚀 Запуск бота локально..."
	python bot.py

# Дополнительные команды
update:
	@echo "🔄 Обновление бота..."
	git pull
	docker-compose build
	docker-compose up -d
	@echo "✅ Бот обновлён и перезапущен"

stats:
	@echo "📊 Статистика использования ресурсов:"
	docker stats buh_bot --no-stream

check-env:
	@echo "🔍 Проверка .env файла..."
	@if [ ! -f .env ]; then \
		echo "❌ Файл .env не найден!"; \
		echo "Создайте: cp .env.example .env"; \
		exit 1; \
	fi
	@if ! grep -q "TELEGRAM_BOT_TOKEN=.*[^_here]" .env; then \
		echo "⚠️  TELEGRAM_BOT_TOKEN не настроен!"; \
	else \
		echo "✅ .env настроен"; \
	fi

# Production команды
prod-build:
	@echo "🔨 Сборка и публикация production образа..."
	@chmod +x build-image.sh
	./build-image.sh

prod-up:
	@echo "🚀 Запуск production stack..."
	@if [ ! -f .env.prod ]; then \
		echo "❌ Файл .env.prod не найден!"; \
		echo "Создайте: cp .env.prod.example .env.prod"; \
		exit 1; \
	fi
	@chmod +x deploy-prod.sh
	./deploy-prod.sh

prod-down:
	@echo "🛑 Остановка production stack..."
	docker-compose -f docker-compose.prod.yml --env-file .env.prod down

prod-logs:
	@echo "📝 Логи production (Ctrl+C для выхода):"
	docker-compose -f docker-compose.prod.yml --env-file .env.prod logs -f

prod-ps:
	@echo "📊 Статус production:"
	docker-compose -f docker-compose.prod.yml --env-file .env.prod ps

prod-restart:
	@echo "🔄 Перезапуск production..."
	docker-compose -f docker-compose.prod.yml --env-file .env.prod restart

prod-pull:
	@echo "📥 Обновление образов..."
	docker-compose -f docker-compose.prod.yml --env-file .env.prod pull

prod-backup:
	@echo "💾 Создание production backup..."
	@mkdir -p /var/backups/buh_bot
	sudo tar -czf /var/backups/buh_bot/backup-$$(date +%Y%m%d-%H%M%S).tar.gz \
		/var/lib/buh_bot/data /var/log/buh_bot
	@echo "✅ Backup создан в /var/backups/buh_bot/"
