# Builds the two-file distribution: dist/kjv-api (static binary) and dist/kjv.db
# (the Bible, every page/script/style/data file, plus runtime tables and logs).
# dist/ also holds the user service and the nginx/apache configs, which are kept in git.

GO ?= go
SOURCES := $(shell find cmd internal -name '*.go') go.mod go.sum

.PHONY: all build dist test clean
all: dist

build: bin/kjv-api

bin/kjv-api: $(SOURCES)
	CGO_ENABLED=0 $(GO) build -trimpath -ldflags="-s -w" -o $@ ./cmd/kjv-api

# kjv.db is a fresh copy of db/kjv.db with everything under assets/ loaded into it
dist: bin/kjv-api db/kjv.db $(shell find assets -type f)
	mkdir -p dist
	cp bin/kjv-api dist/kjv-api
	cp db/kjv.db dist/kjv.db
	bin/kjv-api import-assets -db dist/kjv.db assets
	@ls -l dist

test:
	$(GO) vet ./... && $(GO) test ./...

clean:
	rm -rf bin dist/kjv-api dist/kjv.db
