- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы. - Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов. - Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов. - Добавить тесты для нормализации URL в репозиторий RuTracker. - Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер. - Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
115 lines
5.0 KiB
Makefile
115 lines
5.0 KiB
Makefile
# 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
|