PLC Directory over DNS (experiment)
at main 1.5 kB view raw
1# Makefile 2.PHONY: build run test docker-build docker-run docker-stop clean help 3 4APP_NAME=plcdns 5DOCKER_IMAGE=$(APP_NAME):latest 6DOCKER_CONTAINER=$(APP_NAME) 7 8help: ## Show this help message 9 @echo 'Usage: make [target]' 10 @echo '' 11 @echo 'Available targets:' 12 @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-15s %s\n", $$1, $$2}' $(MAKEFILE_LIST) 13 14build: ## Build the Go binary 15 go build -o $(APP_NAME) . 16 17run: ## Run the application locally 18 go run . -port 8053 19 20test: ## Run tests 21 go test -v -race -cover ./... 22 23test-coverage: ## Run tests with coverage report 24 go test -v -race -coverprofile=coverage.out ./... 25 go tool cover -html=coverage.out -o coverage.html 26 @echo "Coverage report generated: coverage.html" 27 28docker-build: ## Build Docker image 29 docker build -t $(DOCKER_IMAGE) . 30 31docker-run: ## Run Docker container (port 8053) 32 docker-compose up -d 33 34docker-run-prod: ## Run Docker container on port 53 35 docker-compose -f docker-compose.prod.yml up -d 36 37docker-stop: ## Stop Docker container 38 docker-compose down 39 40docker-logs: ## Show Docker container logs 41 docker-compose logs -f 42 43docker-shell: ## Open shell in running container 44 docker exec -it $(DOCKER_CONTAINER) sh 45 46clean: ## Clean build artifacts 47 rm -f $(APP_NAME) 48 rm -f coverage.out coverage.html 49 go clean 50 51fmt: ## Format code 52 go fmt ./... 53 54lint: ## Run linter 55 golangci-lint run 56 57deps: ## Download dependencies 58 go mod download 59 go mod tidy 60 61.DEFAULT_GOAL := help