# editorial — build & publish helpers (wasm .bnp workflow)
#
# The theme compiles to a wasip1 reactor-mode wasm module packed into a .bnp
# artifact (`ninja plugin build`). The legacy .so path is retired (WO-WZ-015):
# the CMS is wasm-native and can no longer load .so plugins. Distribution is
# publish-to-registry -> InstallFromRegistry (hot-load, no restart).
#
# Usage:
#   make build          # compile wasm + pack editorial-<version>.bnp
#   make verify         # validate the built .bnp (layout/abi/name/size)
#   make archive-check  # prove a clean `git archive HEAD` compiles to wasm
#   make publish        # ninja plugin publish --bnp (to the active registry)
#   make templ          # regenerate templ Go files
#   make clean          # remove build artefacts

.PHONY: build verify archive-check publish templ clean help

PLUGIN_NAME := editorial
NINJA       := ninja
BNP         := $(PLUGIN_NAME)-$(shell grep '^version' plugin.mod | sed 's/.*"\(.*\)"/\1/').bnp

# Compile to wasm and pack the .bnp (GOOS=wasip1 GOARCH=wasm, DESCRIBE probe,
# tar.zst of plugin.wasm + plugin.mod + manifest.pb + schemas/ + assets/).
build:
	$(NINJA) plugin build --dir .

# Validate the built .bnp exactly as the registry/loader will.
verify:
	$(NINJA) plugin verify $(BNP)

# Prove a clean `git archive HEAD` (what publish ships) compiles to wasm.
archive-check:
	@T=$$(mktemp -d /tmp/archive-check-$(PLUGIN_NAME).XXXXXX) && \
	trap 'rm -rf "$$T"' EXIT && \
	git archive HEAD | tar -x -C "$$T" && \
	cd "$$T" && GOOS=wasip1 GOARCH=wasm go build -buildmode=c-shared -o "$$T/check.wasm" . && \
	echo "archive-check OK"

# Publish the prebuilt .bnp to the active registry.
# Pass --host https://my.localdev.blockninjacms.com for the dev orchestrator.
publish: build
	$(NINJA) plugin publish --bnp $(BNP)

# Regenerate templ Go files locally.
templ:
	templ generate

# Remove build artefacts.
clean:
	rm -f $(PLUGIN_NAME)-*.bnp $(PLUGIN_NAME).so plugin.wasm

help:
	@echo "Targets:"
	@echo "  build          Compile wasm + pack the .bnp"
	@echo "  verify         Validate the built .bnp (loader-identical checks)"
	@echo "  archive-check  Prove a clean git archive HEAD compiles to wasm"
	@echo "  publish        Publish the .bnp to the active registry"
	@echo "  templ          Regenerate templ Go files"
	@echo "  clean          Remove build artefacts"
