.PHONY: tools golangci-lint gotestsum goqueryset gofumpt buf

GOINSTALL := CGO_ENABLED=0 GOBIN="$(CURDIR)/bin" go install

tools: golangci-lint gotestsum goqueryset gofumpt gocovmerge

golangci-lint: go.mod
	$(GOINSTALL) "github.com/golangci/golangci-lint/cmd/golangci-lint"

gotestsum: go.mod
	$(GOINSTALL) "gotest.tools/gotestsum"

gocovmerge: go.mod
	$(GOINSTALL) "github.com/wadey/gocovmerge"

goqueryset-96ce7dc878747268ddbc89fec219be4bccaf0067: go.mod
	go get -d "github.com/tidbcloud/go-queryset@96ce7dc878747268ddbc89fec219be4bccaf0067"; \
	go build -o "bin/goqueryset-96ce7dc878747268ddbc89fec219be4bccaf0067" "github.com/jirfag/go-queryset/cmd/goqueryset";

goqueryset: goqueryset-96ce7dc878747268ddbc89fec219be4bccaf0067
	ln -sf "goqueryset-96ce7dc878747268ddbc89fec219be4bccaf0067" "bin/goqueryset"

gofumpt: go.mod
	$(GOINSTALL) "mvdan.cc/gofumpt"

buf: go.mod
	$(GOINSTALL) "github.com/bufbuild/buf/cmd/buf@latest"

failpoint-ctl: go.mod
	$(GOINSTALL) "github.com/pingcap/failpoint/failpoint-ctl"

protoc-gen-validate: go.mod
	$(GOINSTALL) "github.com/envoyproxy/protoc-gen-validate"

swagger: go.mod
	$(GOINSTALL) "github.com/go-swagger/go-swagger/cmd/swagger@v0.33.1"

mockery: go.mod
	$(GOINSTALL) "github.com/vektra/mockery/v2@v2.53.3"

shfmt: go.mod
	go build -o "bin/shfmt" "mvdan.cc/sh/v3/cmd/shfmt"
