# go-server/Makefile
# Production builds require LICENSE_PUBLIC_KEY and LICENSE_KEY_ID from your
# license server. Local development can skip them with GO_LICENSE_REQUIRE_PINNED_KEY=false.

LICENSE_PUBLIC_KEY ?=
LICENSE_KEY_ID     ?=

LDFLAGS = -X qycw/go-server/internal/license.EmbeddedPublicKeyBase64=$(LICENSE_PUBLIC_KEY) \
          -X qycw/go-server/internal/license.EmbeddedPublicKeyID=$(LICENSE_KEY_ID)

.PHONY: build-api build-worker check-license-key dev-api dev-worker test

check-license-key:
	@test -n "$(LICENSE_PUBLIC_KEY)" || (echo "ERROR: LICENSE_PUBLIC_KEY is required for production build" && exit 1)
	@test -n "$(LICENSE_KEY_ID)"     || (echo "ERROR: LICENSE_KEY_ID is required for production build" && exit 1)

build-api: check-license-key
	go build -ldflags "$(LDFLAGS)" -o bin/api ./cmd/api

build-worker: check-license-key
	go build -ldflags "$(LDFLAGS)" -o bin/worker ./cmd/worker

dev-api:
	GO_LICENSE_REQUIRE_PINNED_KEY=false go run ./cmd/api

dev-worker:
	GO_LICENSE_REQUIRE_PINNED_KEY=false go run ./cmd/worker

test:
	go test ./... -count=1
