.PHONY: build build-release \
format-fix format-check lint-fix lint-check \
docs docs-check audit msrv \
test test-unit test-integration \
coverage coverage-html coverage-lcov \
clean fix check help
build:
cargo build
build-release:
cargo build --release
format-fix:
cargo fmt
format-check:
cargo fmt --check
lint-fix:
cargo clippy --fix --all-targets --allow-dirty --allow-staged
lint-check:
cargo clippy --all-targets -- -D warnings
docs:
cargo doc --no-deps --open
docs-check:
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps
audit:
@command -v cargo-audit >/dev/null || cargo install --locked cargo-audit
cargo audit
msrv:
@command -v cargo-msrv >/dev/null || cargo install --locked cargo-msrv
cargo msrv verify
test:
cargo test
test-unit:
cargo test --lib
test-integration:
cargo test --test '*'
coverage:
@command -v cargo-llvm-cov >/dev/null || cargo install --locked cargo-llvm-cov
@rustup component list --installed | grep -q llvm-tools-preview || rustup component add llvm-tools-preview
cargo llvm-cov --fail-under-lines 90
coverage-html:
@command -v cargo-llvm-cov >/dev/null || cargo install --locked cargo-llvm-cov
@rustup component list --installed | grep -q llvm-tools-preview || rustup component add llvm-tools-preview
cargo llvm-cov --html --open --fail-under-lines 90
coverage-lcov:
@command -v cargo-llvm-cov >/dev/null || cargo install --locked cargo-llvm-cov
@rustup component list --installed | grep -q llvm-tools-preview || rustup component add llvm-tools-preview
cargo llvm-cov --lcov --output-path lcov.info --fail-under-lines 90
clean:
cargo clean
fix: format-fix lint-fix
check: format-check lint-check docs-check audit msrv test coverage-lcov
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s %s\n", $$1, $$2}'