diff --git a/Makefile b/Makefile index 4a7adb6..425043f 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,17 @@ # Makefile for Firehose monorepo +MISE_BIN ?= mise + .PHONY: check precommit deps compile test test-elisp format -# Common check target that runs all static analysis +# Cheap static gate over both apps, cheapest first. No database, no coverage: +# this is the loop you run freely while working and before every commit. check: - @echo "Running static analysis..." - @make -C app MISE_BIN=mise check + @echo "==> check: app (credo --strict, format)" + @$(MAKE) -C app MISE_BIN=$(MISE_BIN) check + @echo "==> check: blogex (compile, format)" + @$(MAKE) -C blogex MISE_BIN=$(MISE_BIN) check + @echo "==> check: toolchain pins" @bash scripts/check-pins.sh # Precommit target for CI/pre-commit hooks diff --git a/blogex/Makefile b/blogex/Makefile index 0b25f48..88dc22b 100644 --- a/blogex/Makefile +++ b/blogex/Makefile @@ -3,13 +3,33 @@ MISE_BIN ?= mise MISE_EXEC = $(MISE_BIN) exec -- -.PHONY: deps test format +.PHONY: check precommit deps compile test format +# Cheap static gate for this library (no database, no coverage). Runs from the +# root `make check`, which loops app then blogex. +# +# Sensor slot: add `credo` once the "credo strict, tuned config (both apps)" +# yak lands blogex's credo dep + .credo.exs. Do not list it before then — a +# gate that claims a check it did not run is worse than no gate. +check: compile format + +# Per-app precommit loop: same target name and alias shape as app/, so both +# apps share one habit (compile --warning-as-errors, format, test). +precommit: + $(MISE_EXEC) mix precommit + +# Sync dependencies deps: $(MISE_EXEC) mix deps.get +# Compile the project (warnings are fatal) +compile: + $(MISE_EXEC) mix compile --warnings-as-errors + +# Run the test suite test: deps $(MISE_EXEC) mix test +# Format code format: - $(MISE_EXEC) mix format \ No newline at end of file + $(MISE_EXEC) mix format