# Makefile for royalroadupdates — builds entirely inside Docker.

PWD := $(shell pwd)
DOCKER_RUN := docker run --rm -v $(PWD):/src -w /src -e HOME=/tmp -e GOCACHE=/tmp/go-build -e GOMODCACHE=/tmp/go-mod --user $(shell id -u):$(shell id -g) golang:1.26-alpine

.PHONY: build check clean

build:
	$(DOCKER_RUN) sh -c '\
		set -e; \
		if [ -f .env ]; then . ./.env; fi; \
		if [ -z "$$PB_URL" ]; then \
			echo "error: .env is missing or PB_URL is not set"; \
			exit 1; \
		fi; \
		go build \
			-buildvcs=false \
			-ldflags "-X main.PBURL=$${PB_URL}" \
			-o royalroadupdates \
			./cmd/royalroadupdates'

check:
	$(DOCKER_RUN) sh -c '\
		set -e; \
		if [ -f .env ]; then . ./.env; fi; \
		export PB_URL; \
		d=$$(gofmt -l .); \
		if [ -n "$$d" ]; then echo "format errors:"; echo "$$d"; exit 1; fi; \
		go vet -buildvcs=false ./...; \
		go test -buildvcs=false ./...'

clean:
	rm -f royalroadupdates
