Files
EventHubBack/Makefile

226 lines
8.9 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.PHONY: help clean compile shell test eunit test-api test-all \
dialyzer xref cover docs release run stop logs
# Цвета для вывода (только для команд, где нужны)
GREEN := \033[0;32m
YELLOW := \033[1;33m
RED := \033[0;31m
BLUE := \033[0;34m
NC := \033[0m
# Переменные
REBAR3 := rebar3
SNAME := eventhub
SHELL := /bin/bash
# ============================================================================
# HELP
# ============================================================================
help: ## Показать это сообщение
@echo "EventHub - Makefile команды:"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s %s\n", $$1, $$2}'
# ============================================================================
# BUILD
# ============================================================================
compile: ## Скомпилировать проект
@echo "Компиляция проекта..."
@$(REBAR3) compile
@echo "✓ Компиляция завершена"
clean: ## Очистить проект
@echo "Очистка проекта..."
@$(REBAR3) clean
@rm -rf _build deps logs *.log
@echo "✓ Очистка завершена"
deps: ## Установить зависимости
@echo "Установка зависимостей..."
@$(REBAR3) get-deps
@echo "✓ Зависимости установлены"
update-deps: ## Обновить зависимости
@echo "Обновление зависимостей..."
@$(REBAR3) update-deps
@echo "✓ Зависимости обновлены"
# ============================================================================
# DEVELOPMENT
# ============================================================================
shell: ## Запустить интерактивную оболочку
@echo "Запуск Erlang shell..."
@$(REBAR3) shell --sname $(SNAME)
run: ## Запустить приложение (foreground)
@echo "Запуск приложения..."
@$(REBAR3) shell --sname $(SNAME)
stop: ## Остановить приложение
@echo "Остановка приложения..."
@pkill -f "rebar3 shell --sname $(SNAME)" || true
@pkill -f "beam.*$(SNAME)" || true
@echo "✓ Приложение остановлено"
restart: stop run ## Перезапустить приложение
# ============================================================================
# TESTING
# ============================================================================
test: eunit ## Запустить все тесты (алиас для eunit)
eunit: ## Запустить EUnit тесты
@echo "Запуск EUnit тестов..."
@pkill -f "beam.*$(SNAME)" 2>/dev/null || true
@$(REBAR3) eunit --sname $(SNAME)_test
eunit-module: ## Запустить тесты для модуля (make eunit-module MODULE=core_calendar_tests)
@echo "Запуск тестов для модуля $(MODULE)..."
@pkill -f "beam.*$(SNAME)" 2>/dev/null || true
@$(REBAR3) eunit --sname $(SNAME)_test --module=$(MODULE)
eunit-verbose: ## Запустить EUnit тесты с подробным выводом
@echo "Запуск EUnit тестов (verbose)..."
@pkill -f "beam.*$(SNAME)" 2>/dev/null || true
@$(REBAR3) eunit --sname $(SNAME)_test --verbose
test-api: ## Запустить API тесты
@echo "Запуск API тестов..."
@if ! curl -s http://localhost:8080/health > /dev/null 2>&1; then \
echo "✗ Сервер не запущен. Выполните 'make run' в другом терминале"; \
exit 1; \
fi
@chmod +x test/scripts/*.sh
@cd test/scripts && ./test_all.sh
test-auth: ## Запустить тесты аутентификации
@chmod +x test/scripts/test_auth_api.sh
@./test/scripts/test_auth_api.sh
test-calendar: ## Запустить тесты календарей
@chmod +x test/scripts/test_calendar_api.sh
@./test/scripts/test_calendar_api.sh
test-event: ## Запустить тесты событий
@chmod +x test/scripts/test_event_api.sh
@./test/scripts/test_event_api.sh
test-booking: ## Запустить тесты бронирований
@chmod +x test/scripts/test_booking_api.sh
@./test/scripts/test_booking_api.sh
test-all: eunit test-api ## Запустить ВСЕ тесты (EUnit + API)
@echo "========================================"
@echo " ВСЕ ТЕСТЫ ПРОЙДЕНЫ!"
@echo "========================================"
# ============================================================================
# CODE QUALITY
# ============================================================================
dialyzer: ## Запустить Dialyzer (статический анализ)
@echo "Запуск Dialyzer..."
@$(REBAR3) dialyzer
@echo "✓ Dialyzer завершён"
xref: ## Запустить Xref (кросс-ссылки)
@echo "Запуск Xref..."
@$(REBAR3) xref
@echo "✓ Xref завершён"
cover: ## Запустить тесты с покрытием кода
@echo "Запуск тестов с покрытием..."
@pkill -f "beam.*$(SNAME)" 2>/dev/null || true
@$(REBAR3) eunit --sname $(SNAME)_test --cover
@$(REBAR3) cover --verbose
@echo "✓ Отчёт о покрытии в _build/test/cover/"
docs: ## Сгенерировать документацию (EDoc)
@echo "Генерация документации..."
@$(REBAR3) edoc
@echo "✓ Документация в doc/"
# ============================================================================
# RELEASE & DOCKER
# ============================================================================
release: ## Собрать релиз
@echo "Сборка релиза..."
@$(REBAR3) as prod release
@echo "✓ Релиз собран в _build/prod/rel/eventhub/"
docker-build: ## Собрать Docker образ
@echo "Сборка Docker образа..."
@docker build -t eventhub:latest .
@echo "✓ Docker образ собран"
docker-run: ## Запустить Docker контейнер
@echo "Запуск Docker контейнера..."
@docker run -p 8080:8080 -p 8445:8445 --name eventhub eventhub:latest
docker-stop: ## Остановить Docker контейнер
@echo "Остановка Docker контейнера..."
@docker stop eventhub || true
@docker rm eventhub || true
@echo "✓ Контейнер остановлен"
# ============================================================================
# UTILITIES
# ============================================================================
status: ## Проверить статус сервера
@echo "Проверка статуса сервера..."
@if curl -s http://localhost:8080/health > /dev/null 2>&1; then \
echo "✓ Сервер запущен на http://localhost:8080"; \
curl -s http://localhost:8080/health; \
else \
echo "✗ Сервер не запущен"; \
fi
tree: ## Показать структуру проекта
@tree -I '_build|deps|logs|.git' --dirsfirst 2>/dev/null || ls -la
info: ## Показать информацию о проекте
@echo "EventHub - информация о проекте:"
@echo ""
@echo "API эндпоинты:"
@echo " POST /v1/register - Регистрация"
@echo " POST /v1/login - Логин"
@echo " POST /v1/refresh - Обновление токена"
@echo " GET /v1/user/me - Профиль"
@echo " POST /v1/calendars - Создание календаря"
@echo " GET /v1/calendars - Список календарей"
@echo " POST /v1/calendars/:id/events - Создание события"
@echo " POST /v1/events/:id/bookings - Запись на событие"
@echo ""
@echo "Порты:"
@echo " HTTP API: 8080"
@echo " Admin HTTP: 8445"
# ============================================================================
# DEVELOPMENT WORKFLOW
# ============================================================================
dev-setup: deps compile ## Настроить окружение для разработки
@echo "✓ Окружение настроено"
dev-test: ## Быстрый цикл: compile + eunit
@make compile
@make eunit
# ============================================================================
# GIT HELPERS
# ============================================================================
git-status: ## Показать статус Git
@git status --short
git-log: ## Показать лог Git (последние 10)
@git log --oneline -10
git-save: ## Сохранить изменения (commit + push)
@read -p "Сообщение коммита: " msg; \
git add .; \
git commit -m "$$msg"; \
git push
# ============================================================================
# DEFAULT
# ============================================================================
.DEFAULT_GOAL := help