Stage 3.4
This commit is contained in:
226
Makefile
Normal file
226
Makefile
Normal file
@@ -0,0 +1,226 @@
|
||||
.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
|
||||
Reference in New Issue
Block a user