.PHONY: check lint test fmt build clean VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev") LDFLAGS := -X main.Version=$(VERSION) # Default target: run all checks check: fmt-check lint test # Check formatting without modifying files fmt-check: @echo "Checking formatting..." @test -z "$$(gofmt -l . | grep -v '^vendor/')" || (echo "Files need formatting:"; gofmt -l . | grep -v '^vendor/'; exit 1) # Format code fmt: @echo "Formatting code..." gofmt -w $$(find . -name '*.go' -not -path './vendor/*') # Run linter lint: @echo "Running linter..." golangci-lint run # Run tests test: @echo "Running tests..." go test -v ./... # Build the binary build: ./bin/pixad ./bin/pixad: ./internal/*/*.go ./cmd/pixad/*.go @echo "Building pixad..." go build -ldflags "$(LDFLAGS)" -o $@ ./cmd/pixad # Clean build artifacts clean: rm -rf bin/ rm -f data.db