1
1

Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.

- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы.
- Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов.
- Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов.
- Добавить тесты для нормализации URL в репозиторий RuTracker.
- Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер.
- Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
This commit is contained in:
Dmitriy Fofanov
2025-09-29 20:40:05 +03:00
parent 49bea780aa
commit 72a66f1664
32 changed files with 4073 additions and 22 deletions

114
Makefile Normal file
View 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