VERSION ?= dev
BINARY := hf
MAIN_PKG := ./cmd/hf
LDFLAGS := -X git.hangman-lab.top/zhi/HarborForge.Cli/internal/commands.Version=$(VERSION)
DIST_DIR := dist
RELEASE_TARGETS := \
	linux/amd64 \
	linux/arm64 \
	darwin/amd64 \
	darwin/arm64 \
	windows/amd64

.PHONY: build clean release release-all

build:
	mkdir -p bin
	go build -ldflags "$(LDFLAGS)" -o ./bin/$(BINARY) $(MAIN_PKG)

clean:
	rm -rf ./bin/$(BINARY) ./$(DIST_DIR)

release: clean
	mkdir -p $(DIST_DIR)
	@set -e; \
	for target in $(RELEASE_TARGETS); do \
		os=$${target%/*}; \
		arch=$${target#*/}; \
		ext=""; \
		if [ "$$os" = "windows" ]; then ext=".exe"; fi; \
		out="$(DIST_DIR)/$(BINARY)_$(VERSION)_$${os}_$${arch}$${ext}"; \
		echo "==> Building $$out"; \
		GOOS=$$os GOARCH=$$arch go build -ldflags "$(LDFLAGS)" -o "$$out" $(MAIN_PKG); \
	done

release-all: release
