# Makefile .PHONY: build run test docker-build docker-run docker-stop clean help APP_NAME=plcdns DOCKER_IMAGE=$(APP_NAME):latest DOCKER_CONTAINER=$(APP_NAME) help: ## Show this help message @echo 'Usage: make [target]' @echo '' @echo 'Available targets:' @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-15s %s\n", $$1, $$2}' $(MAKEFILE_LIST) build: ## Build the Go binary go build -o $(APP_NAME) . run: ## Run the application locally go run . -port 8053 test: ## Run tests go test -v -race -cover ./... test-coverage: ## Run tests with coverage report go test -v -race -coverprofile=coverage.out ./... go tool cover -html=coverage.out -o coverage.html @echo "Coverage report generated: coverage.html" docker-build: ## Build Docker image docker build -t $(DOCKER_IMAGE) . docker-run: ## Run Docker container (port 8053) docker-compose up -d docker-run-prod: ## Run Docker container on port 53 docker-compose -f docker-compose.prod.yml up -d docker-stop: ## Stop Docker container docker-compose down docker-logs: ## Show Docker container logs docker-compose logs -f docker-shell: ## Open shell in running container docker exec -it $(DOCKER_CONTAINER) sh clean: ## Clean build artifacts rm -f $(APP_NAME) rm -f coverage.out coverage.html go clean fmt: ## Format code go fmt ./... lint: ## Run linter golangci-lint run deps: ## Download dependencies go mod download go mod tidy .DEFAULT_GOAL := help