Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.
- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы. - Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов. - Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов. - Добавить тесты для нормализации URL в репозиторий RuTracker. - Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер. - Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
This commit is contained in:
114
Makefile
Normal file
114
Makefile
Normal file
@@ -0,0 +1,114 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user