# Go parameters GOCMD=go GOBUILD=$(GOCMD) build GOCLEAN=$(GOCMD) clean GOTEST=$(GOCMD) test BINARY_NAME=goldilocks COMMIT := $(shell git rev-parse HEAD) VERSION := "dev" all: test build build: $(GOBUILD) -o $(BINARY_NAME) -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT) -s -w" -v lint: golangci-lint run test: printf "\n\nTests:\n\n" # First run go mod vendor to ensure dependencies are up to date $(GOCMD) mod vendor # Then run tests $(GOCMD) test -v --bench --benchmem -coverprofile coverage.txt -covermode=atomic ./... $(GOCMD) vet ./... 2> govet-report.out $(GOCMD) tool cover -html=coverage.txt -o cover-report.html printf "\nCoverage report available at cover-report.html\n\n" tidy: $(GOCMD) mod tidy $(GOCMD) mod vendor clean: $(GOCLEAN) $(GOCMD) fmt ./... rm -f $(BINARY_NAME) rm -rf e2e/results/* rm -f *-report* rm -f coverage.txt rm -rf vendor/ # Cross compilation build-linux: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(BINARY_NAME) -ldflags "-X main.VERSION=$(VERSION)" -v build-docker: build-linux docker build -t goldilocks:dev . e2e-test: venom run e2e/tests/* --output-dir e2e/results --log info --strict