default: fmt get update test lint

GO       := go
GOBIN    := $(shell pwd)/bin
GOBUILD  := CGO_ENABLED=0 $(GO) build $(BUILD_FLAG)
GOTEST   := $(GO) test -v -race -coverprofile=profile.out -covermode=atomic

FILES    := $(shell find . -name '*.go' -type f -not -name '*.pb.go' -not -name '*_generated.go' -not -name '*_test.go')
TESTS    := $(shell find . -name '*.go' -type f -not -name '*.pb.go' -not -name '*_generated.go' -name '*_test.go')

$(GOBIN)/tparse:
	GOBIN=$(GOBIN) go install github.com/mfridman/tparse@v0.16.0
get:
	$(GO) get ./...
	$(GO) mod verify
	$(GO) mod tidy

update:
	$(GO) get -u -v ./...
	$(GO) mod verify
	$(GO) mod tidy

fmt:
	gofmt -s -l -w $(FILES) $(TESTS)

lint:
	GOFLAGS="-tags=functional" golangci-lint run

test: $(GOBIN)/tparse
	$(GOTEST) -timeout 2m -json ./... \
		| tee output.json | $(GOBIN)/tparse -follow -all
	[ -z "$${GITHUB_STEP_SUMMARY}" ] \
		|| NO_COLOR=1 $(GOBIN)/tparse -format markdown -file output.json -all >"$${GITHUB_STEP_SUMMARY:-/dev/null}"
.PHONY: test_functional
test_functional: $(GOBIN)/tparse
	$(GOTEST) -timeout 15m -tags=functional -json ./... \
		| tee output.json | $(GOBIN)/tparse -follow -all
	[ -z "$${GITHUB_STEP_SUMMARY:-}" ] \
		|| NO_COLOR=1 $(GOBIN)/tparse -format markdown -file output.json -all >"$${GITHUB_STEP_SUMMARY:-/dev/null}"
