GO     := CGO_ENABLED=0 go
export GOFLAGS := -mod=mod

.PHONY: list bin/goqueryset bin/statik bin/protoc-gen-govalidators bin/protoc-gen-grpc-gateway bin/protoc-gen-gogo
list:
	@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | grep -v go.mod | xargs

go.mod:
	$(GO) mod init github.com/go-swagger/go-swagger/cmd/swagger

bin/revive: go.mod
	go build -o bin/revive github.com/mgechev/revive

bin/golangci-lint: go.mod
	go get -d github.com/golangci/golangci-lint/cmd/golangci-lint@v1.42.1; \
	go build -o bin/golangci-lint github.com/golangci/golangci-lint/cmd/golangci-lint

bin/statik-0.1.7: go.mod
	go get -d github.com/rakyll/statik@v0.1.7; \
	go build -o bin/statik-0.1.7 github.com/rakyll/statik;

bin/statik: bin/statik-0.1.7
	ln -sf statik-0.1.7 bin/statik

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

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

bin/swagger-v0.23.0: go.mod
	go get -d github.com/go-swagger/go-swagger@v0.23.0
	go build -o "bin/swagger-v0.23.0" github.com/go-swagger/go-swagger/cmd/swagger

bin/swagger: bin/swagger-v0.23.0
	ln -sf "swagger-v0.23.0" "bin/swagger"

bin/protoc-gen-govalidators-0950a7990007: go.mod
	GOOS=linux GOARCH=amd64 $(GO) get -d "github.com/mwitkow/go-proto-validators@0950a7990007"; \
	GOOS=linux GOARCH=amd64 $(GO) build -o "bin/protoc-gen-govalidators-0950a7990007" "github.com/mwitkow/go-proto-validators/protoc-gen-govalidators";

bin/protoc-gen-govalidators: bin/protoc-gen-govalidators-0950a7990007
	ln -sf "protoc-gen-govalidators-0950a7990007" "bin/protoc-gen-govalidators"

bin/protoc-gen-swagger-v1.12.2: go.mod
	GOOS=linux GOARCH=amd64 $(GO) get -d "github.com/grpc-ecosystem/grpc-gateway@v1.12.2"; \
	GOOS=linux GOARCH=amd64 $(GO) build -o "bin/protoc-gen-swagger-v1.12.2" "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger";

bin/protoc-gen-swagger: bin/protoc-gen-swagger-v1.12.2
	ln -sf "protoc-gen-swagger-v1.12.2" "bin/protoc-gen-swagger"

bin/protoc-gen-grpc-gateway-v1.12.2: go.mod
	GOOS=linux GOARCH=amd64 $(GO) get -d "github.com/grpc-ecosystem/grpc-gateway@v1.12.2"; \
	GOOS=linux GOARCH=amd64 $(GO) build -o "bin/protoc-gen-grpc-gateway-v1.12.2" "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway";

bin/protoc-gen-grpc-gateway: bin/protoc-gen-grpc-gateway-v1.12.2
	ln -sf "protoc-gen-grpc-gateway-v1.12.2" "bin/protoc-gen-grpc-gateway"

bin/protoc-gen-gogo-v1.2.0: go.mod
	GOOS=linux GOARCH=amd64 $(GO) get -d "github.com/gogo/protobuf@v1.2.0"; \
	GOOS=linux GOARCH=amd64 $(GO) build -o "bin/protoc-gen-gogo-v1.2.0" "github.com/gogo/protobuf/protoc-gen-gogo";

bin/protoc-gen-gogo: bin/protoc-gen-gogo-v1.2.0
	ln -sf "protoc-gen-gogo-v1.2.0" "bin/protoc-gen-gogo"

# otel metrics generator
bin/mdatagen:
	$(GO) get -d "github.com/open-telemetry/opentelemetry-collector-contrib/cmd/mdatagen@9c9d1913003eb374c8c6108129d6bf01b947fe89"; \
    $(GO) build -o "bin/mdatagen" "github.com/open-telemetry/opentelemetry-collector-contrib/cmd/mdatagen";
