# Makefile for Blogex library MISE_BIN ?= mise MISE_EXEC = $(MISE_BIN) exec -- .PHONY: check precommit deps compile test format verify # 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 # ============================================================================= # Lens pass (heavy checks; root `make verify` runs this before every push) # ============================================================================= # # Sensor slots, cheapest first. Add a sensor as its yak lands, both as a target # and to VERIFY_SENSORS — that variable is the single source of truth for what # this target reports as wired. # - coverage (yak: coverage floors + framework-glue exclusions policy) # - crap (yak: CRAP scores with ex_crap (both apps)) # - mutation (yak: mutation testing with muex — a sensor, not a gate) VERIFY_SENSORS := verify: @echo "==> verify(blogex): sensors [$(if $(VERIFY_SENSORS),$(VERIFY_SENSORS),none wired yet)]" @for sensor in $(VERIFY_SENSORS); do $(MAKE) $$sensor || exit 1; done @$(MAKE) test