.PHONY: build run dev clean test # Build variables VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "none") DATE ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ") LDFLAGS := -ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.date=$(DATE)" # Default target all: build # Build the binary build: go build $(LDFLAGS) -o kaze ./cmd/kaze # Build for production (smaller binary) build-prod: CGO_ENABLED=0 go build $(LDFLAGS) -o kaze ./cmd/kaze # Run the application run: build ./kaze # Run with debug logging dev: build ./kaze --debug # Clean build artifacts clean: rm -f kaze rm -f *.db *.db-shm *.db-wal # Run tests test: go test -v ./... # Run tests with coverage test-cover: go test -v -coverprofile=coverage.out ./... go tool cover -html=coverage.out -o coverage.html # Format code fmt: go fmt ./... # Lint code lint: go vet ./... # Tidy dependencies tidy: go mod tidy # Build for multiple platforms build-all: build-linux build-darwin build-windows build-linux: GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-linux-amd64 ./cmd/kaze GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-linux-arm64 ./cmd/kaze build-darwin: GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-darwin-amd64 ./cmd/kaze GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-darwin-arm64 ./cmd/kaze build-windows: GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o dist/kaze-windows-amd64.exe ./cmd/kaze # Docker build docker: docker build -t kaze:$(VERSION) . # Help help: @echo "Available targets:" @echo " build - Build the binary" @echo " build-prod - Build optimized production binary" @echo " run - Build and run" @echo " dev - Build and run with debug logging" @echo " clean - Remove build artifacts and databases" @echo " test - Run tests" @echo " test-cover - Run tests with coverage report" @echo " fmt - Format code" @echo " lint - Lint code" @echo " tidy - Tidy dependencies" @echo " build-all - Build for all platforms" @echo " docker - Build Docker image"