SDK_MODULE := git.dev.alexdunmow.com/block/core
SDK_VERSION ?= $(shell git describe --tags --abbrev=0)

SDK_DOWNSTREAM_DIRS := \
	$(HOME)/src/blockninja/backend \
	$(HOME)/src/assumechaos \
	$(HOME)/src/bidbuddy \
	$(HOME)/src/bidmasters \
	$(HOME)/src/coterieos \
	$(HOME)/src/messenger \
	$(HOME)/src/perthplaygrounds \
	$(HOME)/src/symposium

.PHONY: update-sdk
update-sdk:
	@set -e; \
	for dir in $(SDK_DOWNSTREAM_DIRS); do \
		if [ ! -f "$$dir/go.mod" ]; then \
			echo "skip $$dir (no go.mod)"; \
			continue; \
		fi; \
		echo "==> $$dir: $(SDK_MODULE)@$(SDK_VERSION)"; \
		( \
			cd "$$dir"; \
			go mod edit -dropreplace=$(SDK_MODULE) 2>/dev/null || true; \
			go get $(SDK_MODULE)@$(SDK_VERSION); \
			go mod tidy; \
			if grep -q '^replace $(SDK_MODULE)' go.mod; then \
				echo "replace directive still present in $$dir/go.mod" >&2; \
				exit 1; \
			fi; \
		); \
	done

.PHONY: check-sdk-pins
check-sdk-pins:
	@set -e; \
	for dir in $(SDK_DOWNSTREAM_DIRS); do \
		if [ ! -f "$$dir/go.mod" ]; then \
			continue; \
		fi; \
		if grep -q '^replace $(SDK_MODULE)' "$$dir/go.mod"; then \
			echo "replace directive found in $$dir/go.mod" >&2; \
			exit 1; \
		fi; \
		if ! grep -Eq '^[[:space:]]*$(SDK_MODULE)[[:space:]]+v[0-9]+\.[0-9]+\.[0-9]+' "$$dir/go.mod"; then \
			echo "$(SDK_MODULE) is not pinned in $$dir/go.mod" >&2; \
			exit 1; \
		fi; \
	done
