GOPRIVATE:="github.com/tidbcloud/*"
LDFLAGS += -X "github.com/tidbcloud/tidb-management-service/tidb-mgmt-portal/pkg/version.GitHash=$(shell git rev-parse HEAD)"
LDFLAGS += -X "github.com/tidbcloud/tidb-management-service/tidb-mgmt-portal/pkg/version.GitBranch=$(shell git rev-parse --abbrev-ref HEAD)"
MAKEFILE_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))

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.tidb-mgmt-portal.txt ./...

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


.PHONY: local-run
local-run: build
	$(MAKEFILE_DIR)/../bin/tidb-mgmt-portal/tidb-mgmt-portal --config=$(MAKEFILE_DIR)/config/example.yaml
