From 73eb852361e21bbda3b1e7dc5295e36d36c2a75e Mon Sep 17 00:00:00 2001 From: Jack O'Neill Date: Sun, 5 Apr 2026 11:04:55 +0200 Subject: [PATCH] build: merge main make targets into ui branch --- Makefile | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index aa92285..0f77f04 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,10 @@ PATCH_INCREMENT ?= 1 VERSION_TAG ?= $(shell git describe --tags --exact-match 2>/dev/null || echo dev) COMMIT_SHA ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown) BUILD_DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ) +RELSPEC ?= $(shell command -v relspec 2>/dev/null || echo $(HOME)/go/bin/relspec) +SCHEMA_FILES := $(sort $(wildcard schema/*.dbml)) +MERGE_TARGET_TMP := $(CURDIR)/.cache/schema.merge-target.dbml +GENERATED_SCHEMA_MIGRATION := migrations/020_generated_schema.sql PNPM ?= pnpm LDFLAGS := -s -w \ -X $(BUILDINFO_PKG).Version=$(VERSION_TAG) \ @@ -15,7 +19,7 @@ LDFLAGS := -s -w \ -X $(BUILDINFO_PKG).Commit=$(COMMIT_SHA) \ -X $(BUILDINFO_PKG).BuildDate=$(BUILD_DATE) -.PHONY: all build clean migrate release-version test ui-install ui-build ui-dev ui-check +.PHONY: all build clean migrate release-version test generate-migrations check-schema-drift build-cli ui-install ui-build ui-dev ui-check all: build @@ -64,3 +68,31 @@ migrate: clean: rm -rf $(BIN_DIR) + +generate-migrations: + @test -n "$(SCHEMA_FILES)" || (echo "No DBML schema files found in schema/" >&2; exit 1) + @command -v $(RELSPEC) >/dev/null 2>&1 || (echo "relspec not found; install git.warky.dev/wdevs/relspecgo/cmd/relspec@latest" >&2; exit 1) + @mkdir -p $(dir $(MERGE_TARGET_TMP)) + @: > $(MERGE_TARGET_TMP) + @schema_list=$$(printf '%s\n' $(SCHEMA_FILES) | paste -sd, -); \ + $(RELSPEC) merge --target dbml --target-path $(MERGE_TARGET_TMP) --source dbml --from-list "$$schema_list" --output pgsql --output-path $(GENERATED_SCHEMA_MIGRATION) + +check-schema-drift: + @test -f $(GENERATED_SCHEMA_MIGRATION) || (echo "$(GENERATED_SCHEMA_MIGRATION) is missing; run make generate-migrations" >&2; exit 1) + @command -v $(RELSPEC) >/dev/null 2>&1 || (echo "relspec not found; install git.warky.dev/wdevs/relspecgo/cmd/relspec@latest" >&2; exit 1) + @mkdir -p $(dir $(MERGE_TARGET_TMP)) + @tmpfile=$$(mktemp); \ + : > $(MERGE_TARGET_TMP); \ + schema_list=$$(printf '%s\n' $(SCHEMA_FILES) | paste -sd, -); \ + $(RELSPEC) merge --target dbml --target-path $(MERGE_TARGET_TMP) --source dbml --from-list "$$schema_list" --output pgsql --output-path $$tmpfile; \ + if ! cmp -s $$tmpfile $(GENERATED_SCHEMA_MIGRATION); then \ + echo "Schema drift detected between schema/*.dbml and $(GENERATED_SCHEMA_MIGRATION)" >&2; \ + diff -u $(GENERATED_SCHEMA_MIGRATION) $$tmpfile || true; \ + rm -f $$tmpfile; \ + exit 1; \ + fi; \ + rm -f $$tmpfile + +build-cli: + @mkdir -p $(BIN_DIR) + go build -o $(BIN_DIR)/amcs-cli ./cmd/amcs-cli