SHELL := /bin/bash
REMOTE ?= alarm
REMOTE_DIR ?= /zdata/root/dockerFiles/lvmh

.PHONY: help build verify worker-image daemon web test deploy e2e integration e2e-integration clean

help:
	@echo "build         build daemon + web (dev checks)"
	@echo "verify        vet + staticcheck + tests + web build"
	@echo "worker-image  build lvmh-worker:latest (requires plugin/)"
	@echo "deploy        rsync to alarm:$(REMOTE_DIR) and docker compose up -d"
	@echo "integration   cross-component e2e harness (e2e/, requires go + bun)"

build: daemon web

daemon:
	cd daemon && go build ./...

web:
	cd web && bun install && bun run build

worker-image:
	docker build -f docker/worker.Dockerfile \
		--build-arg LVMH_PLUGIN=build-plugin/lvmh-agent.ts \
		-t lvmh-worker:latest .
	@# build-plugin/ is prepared by deploy/prep-worker.sh

verify: daemon
	cd daemon && go vet ./...
	cd daemon && staticcheck ./... || true
	cd daemon && go test ./... -count=1
	cd web && bun run build
	cd plugin && bunx tsc --noEmit -p tsconfig.json

test:
	cd daemon && go test ./... -count=1

deploy: verify worker-image
	bash deploy/deploy.sh $(REMOTE) $(REMOTE_DIR)

e2e:
	bash deploy/e2e.sh

integration:
	bun e2e/driver.mjs

e2e-integration: integration

clean:
	rm -rf web/dist web/node_modules daemon/lvmh-daemon .pi/scratch
