# AudioBook Catalyst Makefile # Удобные команды для разработки и тестирования # Переменные BINARY_NAME=audio-catalyst.exe MAIN_PACKAGE=./cmd TEST_TIMEOUT=30s # Цвета для вывода GREEN=\033[0;32m YELLOW=\033[0;33m RED=\033[0;31m NC=\033[0m # No Color .PHONY: help build test clean run fmt vet deps benchmark coverage install # Помощь help: ## Показать это сообщение помощи @echo "$(YELLOW)AudioBook Catalyst - Команды разработки$(NC)" @echo "" @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "$(GREEN)%-15s$(NC) %s\n", $$1, $$2}' $(MAKEFILE_LIST) # Основные команды build: ## Собрать приложение @echo "$(YELLOW)🔨 Сборка AudioBook Catalyst...$(NC)" @powershell -Command "$$env:GOOS='windows'; $$env:GOARCH='amd64'; $$env:CGO_ENABLED='1'; go build -o $(BINARY_NAME) $(MAIN_PACKAGE)" @echo "$(GREEN)✅ Сборка завершена: $(BINARY_NAME)$(NC)" run: build ## Собрать и запустить приложение @echo "$(YELLOW)🚀 Запуск AudioBook Catalyst...$(NC)" @powershell -Command ".\$(BINARY_NAME)" test: ## Запустить все тесты @echo "$(YELLOW)🧪 Запуск тестов...$(NC)" @powershell -Command "$$env:GOOS='windows'; $$env:GOARCH='amd64'; $$env:CGO_ENABLED='1'; go test -v -timeout $(TEST_TIMEOUT) ./..." @echo "$(GREEN)✅ Тесты завершены$(NC)" benchmark: ## Запустить бенчмарки @echo "$(YELLOW)⚡ Запуск бенчмарков...$(NC)" @powershell -Command "$$env:GOOS='windows'; $$env:GOARCH='amd64'; $$env:CGO_ENABLED='1'; go test -bench=. -benchmem ./..." @echo "$(GREEN)✅ Бенчмарки завершены$(NC)" coverage: ## Запустить тесты с анализом покрытия @echo "$(YELLOW)📊 Анализ покрытия кода...$(NC)" @powershell -Command "$$env:GOOS='windows'; $$env:GOARCH='amd64'; $$env:CGO_ENABLED='1'; go test -v -cover -coverprofile=coverage.out ./..." go tool cover -html=coverage.out -o coverage.html @echo "$(GREEN)✅ Отчет о покрытии создан: coverage.html$(NC)" # Качество кода fmt: ## Форматировать код @echo "$(YELLOW)🎨 Форматирование кода...$(NC)" go fmt ./... @echo "$(GREEN)✅ Код отформатирован$(NC)" vet: ## Статический анализ кода @echo "$(YELLOW)🔍 Статический анализ...$(NC)" go vet ./... @echo "$(GREEN)✅ Анализ завершен$(NC)" lint: ## Запустить линтер (требует golangci-lint) @echo "$(YELLOW)🔎 Запуск линтера...$(NC)" golangci-lint run @echo "$(GREEN)✅ Линтинг завершен$(NC)" # Зависимости deps: ## Обновить зависимости @echo "$(YELLOW)📦 Обновление зависимостей...$(NC)" go mod tidy go mod download @echo "$(GREEN)✅ Зависимости обновлены$(NC)" deps-verify: ## Проверить зависимости @echo "$(YELLOW)🔐 Проверка зависимостей...$(NC)" go mod verify @echo "$(GREEN)✅ Зависимости проверены$(NC)" # Очистка clean: ## Очистить артефакты сборки @echo "$(YELLOW)🧹 Очистка...$(NC)" @powershell -Command "go clean; Remove-Item -Force -ErrorAction SilentlyContinue $(BINARY_NAME); Remove-Item -Force -ErrorAction SilentlyContinue coverage.out, coverage.html" @echo "$(GREEN)✅ Очистка завершена$(NC)" clean-cache: ## Очистить кэш Go @echo "$(YELLOW)🗑️ Очистка кэша Go...$(NC)" go clean -cache -modcache -testcache @echo "$(GREEN)✅ Кэш очищен$(NC)" # Установка инструментов разработки install-tools: ## Установить инструменты разработки @echo "$(YELLOW)🛠️ Установка инструментов...$(NC)" go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest @echo "$(GREEN)✅ Инструменты установлены$(NC)" # Комплексные команды check: fmt vet test ## Полная проверка кода (форматирование + анализ + тесты) @echo "$(GREEN)✅ Все проверки пройдены$(NC)" release: clean check build ## Подготовка к релизу @echo "$(GREEN)🎉 Готово к релизу!$(NC)" # Отладка debug: ## Информация о Go окружении @echo "$(YELLOW)🔧 Информация о Go:$(NC)" @echo "Go version: $$(go version)" @echo "GOOS: $$(go env GOOS)" @echo "GOARCH: $$(go env GOARCH)" @echo "GOPATH: $$(go env GOPATH)" @echo "GOROOT: $$(go env GOROOT)" # Быстрые команды t: test ## Быстрый алиас для test b: build ## Быстрый алиас для build r: run ## Быстрый алиас для run c: clean ## Быстрый алиас для clean