# Build variables version := `git describe --tags --always --dirty 2>/dev/null || echo "dev"` commit := `git rev-parse --short HEAD 2>/dev/null || echo "none"` date := `date -u +"%Y-%m-%dT%H:%M:%SZ"` ldflags := "-s -w -X main.version=" + version + " -X main.commit=" + commit + " -X main.date=" + date # Default target default: just --list # Build the binary build: go build -ldflags "{{ldflags}}" -o kaze ./cmd/kaze # Build for production (smaller binary) build-prod: CGO_ENABLED=0 go build -ldflags "{{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 rm -f coverage.out coverage.html rm -rf dist/ # 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 "{{ldflags}}" -o dist/kaze-linux-amd64 ./cmd/kaze GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags "{{ldflags}}" -o dist/kaze-linux-arm64 ./cmd/kaze build-darwin: GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "{{ldflags}}" -o dist/kaze-darwin-amd64 ./cmd/kaze GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags "{{ldflags}}" -o dist/kaze-darwin-arm64 ./cmd/kaze build-windows: GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "{{ldflags}}" -o dist/kaze-windows-amd64.exe ./cmd/kaze # Docker build docker: docker build -t kaze:{{version}} . dockerx version: docker buildx build --push --platform linux/amd64,linux/arm64 -t ghcr.io/fuwn/kaze:{{version}} .