MODULES ?= api \
			tidb-mgmt-portal \
			tidb-mgmt-service \
			tempo-wrapper \
			tempo-proxy \
			serverless-global-service \
			dedicated-global-service \
			nextgen-global-service \
			functional-test \
			utilities

default: dev

.PHONY: dev
dev:
	for module in $(MODULES); do \
		printf "\n************ Module: $$module ************\n"; \
		$(MAKE) -C $$module dev || exit 1; \
	done

.PHONY: set-go-private-local
set-go-private-local:
	# This command is only used for local development.
	# After Setting, run `go env` to check if GOPRIVATE is set correctly.
	go env -w GOPRIVATE=github.com/tidbcloud/*
	git config --global url."git@github.com:".insteadOf https://github.com/
	git config --global url."git://".insteadOf https://

.PHONY: docker-image
docker-image: build # This command is only used for local test.
	docker build -f dockerfiles/build.Dockerfile -t tidbcloud/tidb-management-service .

################################################################################

.PHONY: vet
vet:
	for module in $(MODULES); do \
		printf "\n************ Module: $$module ************\n"; \
		$(MAKE) -C $$module vet || exit 1; \
	done

.PHONY: mod
mod:
	for module in $(MODULES); do \
		printf "\n************ Module: $$module ************\n"; \
		$(MAKE) -C $$module mod || exit 1; \
	done

.PHONY: generate
generate:
	for module in $(MODULES); do \
		printf "\n************ Module: $$module ************\n"; \
		$(MAKE) -C $$module generate || exit 1; \
	done

.PHONY: fmt
fmt:
	for module in $(MODULES); do \
		printf "\n************ Module: $$module ************\n"; \
		$(MAKE) -C $$module fmt || exit 1; \
	done

.PHONY: lint
lint:
	for module in $(MODULES); do \
		printf "\n************ Module: $$module ************\n"; \
		$(MAKE) -C $$module lint || exit 1; \
	done

.PHONY: test
test:
	for module in $(MODULES); do \
		printf "\n************ Module: $$module ************\n"; \
		$(MAKE) -C $$module test || exit 1; \
	done

.PHONY: build
build:
	for module in $(MODULES); do \
		printf "\n************ Module: $$module ************\n"; \
		$(MAKE) -C $$module build || exit 1; \
	done
