SHELL := /bin/sh GO_PACKAGES := ./cmd/... ./db/... ./internal/... ./tests/... VERSION ?= dev .PHONY: build check clean docker-build format generate generate-check test web-build web-install web-sync build: web-sync mkdir -p bin go build -trimpath -o bin/imagesilo ./cmd/imagesilo check: web-sync test -z "$$(gofmt -l cmd db internal tests)" go vet $(GO_PACKAGES) go test $(GO_PACKAGES) bash -n scripts/*.sh npm --prefix web run lint npm --prefix web run typecheck npm --prefix web run test clean: go clean rm -rf bin coverage internal/webui/dist web/dist docker-build: docker buildx build --pull --platform linux/amd64,linux/arm64 --build-arg VERSION=$(VERSION) --file deploy/docker/Dockerfile . format: gofmt -w cmd db internal npm --prefix web exec -- eslint . --fix generate: npm --prefix web run generate:api generate-check: @temporary="$$(mktemp)"; \ trap 'rm -f "$$temporary"' EXIT; \ npm --prefix web exec -- openapi-typescript api/openapi.yaml -o "$$temporary"; \ if ! cmp -s web/src/generated/openapi.d.ts "$$temporary"; then \ diff -u web/src/generated/openapi.d.ts "$$temporary" || true; \ echo 'Generated OpenAPI types are stale; run make generate.' >&2; \ exit 1; \ fi test: web-sync go test $(GO_PACKAGES) npm --prefix web run test web-build: generate-check npm --prefix web run build web-sync: web-build rm -rf internal/webui/dist mkdir -p internal/webui/dist cp -R web/dist/. internal/webui/dist/ web-install: npm --prefix web install