go-tell/Makefile
Daniel Noulet 6af2853faa build and ready for demo
login screen
2026-09-19 17:33:44 +02:00

60 lines
1.7 KiB
Makefile

SHELL := /bin/sh
IMAGE ?= cms-demo
TAG ?= latest
.PHONY: help ui backend demo production run test check docker docker-run clean
help:
@echo "make ui build the React app into cmd/server/web/dist"
@echo "make backend run the Go server on :8080 (serves the last UI build)"
@echo "make demo run the in-memory demo profile"
@echo "make production run the SSO production profile"
@echo "make run build the UI, then run the server"
@echo "make test run the Go test suite"
@echo "make check gofmt, vet, and tests"
@echo "make docker build the all-in-one image"
@echo "make docker-run run the image on :8080"
@echo "make clean remove build output"
# The Go server embeds the compiled frontend, so the UI is built first and copied
# into the embed directory that cmd/server/main.go points at.
ui:
@if [ ! -d ui/app/node_modules ]; then \
npm --prefix ui/app ci; \
fi
npm --prefix ui/app run build
rm -rf cmd/server/web/dist
mkdir -p cmd/server/web/dist
cp -R ui/dist/. cmd/server/web/dist/
backend:
set -a; [ ! -f .env ] || . ./.env; set +a; \
go run ./cmd/server
demo:
CMS_PROFILE=demo $(MAKE) backend
production:
CMS_PROFILE=production $(MAKE) backend
run: ui backend
test:
go test ./...
check:
gofmt -l ./cmd ./internal
go vet ./...
go test ./...
docker:
docker build -t $(IMAGE):$(TAG) .
docker-run:
docker run --rm -p 8080:8080 --env-file .env $(IMAGE):$(TAG)
clean:
rm -rf cmd/server/web/dist ui/dist
mkdir -p cmd/server/web/dist
printf 'Placeholder so the Go embed directive resolves before the frontend is built.\nRun `make ui` to replace this directory with the real React build.\n' > cmd/server/web/dist/placeholder.txt