# MyGoServer Makefile # Удобные команды для разработки и тестирования .PHONY: help build test test-coverage test-race fmt vet clean docker-up docker-down # Default target help: @echo "🚀 MyGoServer Development Commands:" @echo "" @echo "📦 Build Commands:" @echo " build - Build the application" @echo " build-clean - Clean build and rebuild" @echo "" @echo "🧪 Test Commands:" @echo " test - Run all tests" @echo " test-unit - Run unit tests only" @echo " test-coverage - Run tests with coverage report" @echo " test-race - Run tests with race detector" @echo " test-watch - Run tests in watch mode" @echo "" @echo "🔧 Code Quality:" @echo " fmt - Format all Go code" @echo " vet - Run static analysis" @echo " lint - Run linting (if golangci-lint installed)" @echo "" @echo "🐳 Docker Commands:" @echo " docker-up - Start application with Docker" @echo " docker-down - Stop Docker containers" @echo " docker-build - Build Docker image" @echo "" @echo "🧹 Cleanup:" @echo " clean - Clean build artifacts" @echo "" # Build commands build: generate-docs @echo "🏗️ Building application..." go build -o apiserver ./cmd/apiserver @echo "✅ Build completed: apiserver" generate-docs: @echo "📖 Generating Swagger documentation..." swag init -g cmd/apiserver/main.go -o internal/apiserver/docs @echo "✅ Swagger documentation generated" build-clean: clean build # Test commands test: @echo "🧪 Running all tests..." ./scripts/test.sh test-unit: @echo "🧪 Running unit tests..." go test -v ./internal/apiserver/... test-coverage: @echo "📊 Running tests with coverage..." go test -coverprofile=coverage.out ./... go tool cover -html=coverage.out -o coverage.html @echo "📊 Coverage report: coverage.html" test-race: @echo "🏁 Running tests with race detector..." go test -race ./... test-watch: @echo "👀 Running tests in watch mode..." @which gotest > /dev/null || (echo "Installing gotest-watcher..." && go install github.com/bitfield/gotest@latest) gotest -w ./... # Code quality fmt: @echo "🎨 Formatting code..." go fmt ./... @echo "✅ Code formatted" vet: @echo "🔍 Running static analysis..." go vet ./... @echo "✅ Static analysis completed" lint: @echo "🧹 Running linter..." @which golangci-lint > /dev/null || (echo "Installing golangci-lint..." && go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest) golangci-lint run @echo "✅ Linting completed" # Docker commands docker-up: @echo "🐳 Starting application with Docker..." docker-compose -f build/docker-compose.yml up -d @echo "🚀 Application started on http://localhost:8080" @echo "📖 Swagger UI: http://localhost:8080/swagger/" docker-down: @echo "🛑 Stopping Docker containers..." docker-compose -f build/docker-compose.yml down docker-build: @echo "🔨 Building Docker image..." docker build -f build/Dockerfile -t mygoserver:latest . # Cleanup clean: @echo "🧹 Cleaning build artifacts..." rm -f apiserver coverage.out coverage.html rm -rf build/bin/ docker-compose -f build/docker-compose.yml down -v 2>/dev/null || true @echo "✅ Cleanup completed" # Development helpers dev: build @echo "🚀 Starting development server..." ./apiserver debug: build @echo "🐛 Starting debug server..." dlv --listen=:2345 --headless=true --api-version=2 exec ./apiserver # Run specific test patterns test-pattern: @if [ -z "$(PATTERN)" ]; then \ echo "Usage: make test-pattern PATTERN=TestName"; \ exit 1; \ fi @echo "🧪 Running tests matching: $(PATTERN)" go test -v ./internal/apiserver/... -run="$(PATTERN)" # Install development tools install-tools: @echo "🛠️ Installing development tools..." go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest go install github.com/swaggo/swag/cmd/swag@latest @echo "✅ Development tools installed" # Swagger documentation swag-setup: @echo "📖 Setting up Swagger documentation..." @echo "⚠️ Installing swag tool..." go install github.com/swaggo/swag/cmd/swag@latest @echo "✅ swag installed" @echo "📋 Initializing Swagger configuration..." swag init -g cmd/apiserver/main.go -o internal/apiserver/docs @echo "✅ Swagger documentation generated" .PHONY: help build test test-coverage test-race fmt vet clean docker-up docker-down swag-setup