GOPRIVATE:="github.com/tidbcloud/*"
MAKEFILE_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))

_COMMIT := $(shell git describe --no-match --always --dirty)
_GITREF := $(shell git rev-parse --abbrev-ref HEAD)
COMMIT  := $(if $(COMMIT),$(COMMIT),$(_COMMIT))
GITREF  := $(if $(GITREF),$(GITREF),$(_GITREF))

REPO    :=  github.com/tidbcloud/tidb-management-service/tempo-wrapper

LDFLAGS := -w -s
LDFLAGS += -X "$(REPO)/pkg/version.GitHash=$(COMMIT)"
LDFLAGS += -X "$(REPO)/pkg/version.GitRef=$(GITREF)"

default: dev

.PHONY: dev
dev: generate mod fmt build test

.PHONY: vet
vet:
	GOPRIVATE=$(GOPRIVATE) go vet ./...

.PHONY: mod
mod:
	GOPRIVATE=$(GOPRIVATE) go mod tidy
	GOPRIVATE=$(GOPRIVATE) go mod download

.PHONY: generate
generate:
	GOPRIVATE=$(GOPRIVATE) go generate ./...

.PHONY: fmt
fmt:
	GOPRIVATE=$(GOPRIVATE) go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.11 run --config $(MAKEFILE_DIR)/../.golangci.yml --fix

.PHONY: lint
lint:
	GOPRIVATE=$(GOPRIVATE) go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.11 run --config $(MAKEFILE_DIR)/../.golangci.yml

.PHONY: test
test:
	GOPRIVATE=$(GOPRIVATE) go run gotest.tools/gotestsum@latest --format=testname -- -v -race -failfast -shuffle=on -coverprofile=$(MAKEFILE_DIR)/../coverage.tempo-wrapper.txt ./...

.PHONY: build
build:
	mkdir -p $(MAKEFILE_DIR)/../bin/tempo-wrapper
	GOPRIVATE=$(GOPRIVATE) go build -o $(MAKEFILE_DIR)/../bin/tempo-wrapper -ldflags '$(LDFLAGS)' ./...
