LECTIO    := lectio
LECTIO_UI := lectio-ui
PREFIX   ?= $(HOME)/.local
BINDIR   := $(PREFIX)/bin

.PHONY: help build install uninstall test vet fmt clean cross
help: ## show this help
	@grep -hE '^[a-z-]+:.*##' $(MAKEFILE_LIST) | sed -E 's/:.*## /\t/' | sort
build: ## build ./lectio and ./lectio-ui
	go build -o $(LECTIO) ./cmd/lectio
	go build -o $(LECTIO_UI) ./cmd/lectio-ui
install: ## build and install both to $(BINDIR)
	@mkdir -p $(BINDIR)
	go build -o $(BINDIR)/$(LECTIO) ./cmd/lectio
	go build -o $(BINDIR)/$(LECTIO_UI) ./cmd/lectio-ui
	@echo "installed $(BINDIR)/$(LECTIO) and $(BINDIR)/$(LECTIO_UI)"
uninstall: ## remove installed binaries
	rm -f $(BINDIR)/$(LECTIO) $(BINDIR)/$(LECTIO_UI)
test: ## run tests
	go test ./...
vet: ## go vet
	go vet ./...
fmt: ## gofmt the tree
	gofmt -w .
clean: ## remove build artifacts
	rm -f $(LECTIO) $(LECTIO_UI); rm -rf dist
cross: ## cross-compile into dist/
	@mkdir -p dist
	@for t in linux/amd64 linux/arm64 darwin/arm64 darwin/amd64 windows/amd64; do \
		os=$${t%/*}; arch=$${t#*/}; ext=; [ $$os = windows ] && ext=.exe; \
		echo "  $$os/$$arch"; \
		GOOS=$$os GOARCH=$$arch go build -o dist/$(LECTIO)-$$os-$$arch$$ext ./cmd/lectio; \
		GOOS=$$os GOARCH=$$arch go build -o dist/$(LECTIO_UI)-$$os-$$arch$$ext ./cmd/lectio-ui; \
	done
