# Development tasks. Everything runs through `cargo`, so there is nothing to # install first. # # make list the targets # make test run the suite # make lint clippy + rustfmt check, no files touched # make build release build of the library and the CLI CARGO ?= cargo .DEFAULT_GOAL := help .PHONY: help test lint format build check clean doc help: @echo 'Targets:' @echo ' test run the test suite (unit, integration and doc tests)' @echo ' lint cargo clippy -D warnings + cargo fmt --check (read-only)' @echo ' format apply cargo fmt (writes)' @echo ' build release build of the library and the cepis CLI' @echo ' check lint + test + build, in that order' @echo ' doc build the API documentation' @echo ' clean remove build artefacts' test: $(CARGO) test --all-targets $(CARGO) test --doc # Read-only by design, so it is safe in CI and in a pre-commit hook: it reports # what `make format` would change without changing anything. lint: $(CARGO) clippy --all-targets -- -D warnings $(CARGO) fmt --check format: $(CARGO) fmt build: $(CARGO) build --release doc: $(CARGO) doc --no-deps # The order matters: lint is the fastest to fail, build the slowest, so a broken # run reports the cheapest problem first. check: lint test build clean: $(CARGO) clean