# spell-checker: ignore nofile nocapture
prettier_bin := ```
if command -V prettier 2>&1 | grep -q 'not found'; then
echo -n npx prettier
else
echo -n prettier
fi
```
cspell_bin := ```
if command -V cspell 2>&1 | grep -q 'not found'; then
echo -n npx cspell
else
echo -n cspell
fi
```
msrv := '1.61.0'
# Check and fix format of rust files (Uses: 'cargo +nightly')
[group('formatting')]
fmt:
cargo +nightly fmt --all
# Check and fix format of toml files (Uses: 'taplo')
[group('formatting')]
fmt-toml:
taplo fmt
# Check and fix format of json and yaml files (Uses: 'prettier' or 'npx prettier')
[group('formatting')]
fmt-prettier:
{{ prettier_bin }} --write .
# Run all fmt rules (Depends on: fmt, fmt-toml, fmt-prettier)
[group('formatting')]
fmt-all: fmt fmt-toml fmt-prettier
# Check format of rust files (Uses: 'cargo +nightly')
[group('formatting')]
check-fmt:
cargo +nightly fmt --all --check
# Check format of toml files with `taplo` (Uses: 'taplo')
[group('formatting')]
check-fmt-toml:
taplo fmt --check --verbose
# Check format of json and yaml files (Uses: 'prettier' or 'npx prettier')
[group('formatting')]
check-fmt-prettier:
{{ prettier_bin }} --check --log-level warn .
# Check spelling with cspell (Uses: 'cspell' or 'npx cspell')
[group('formatting')]
check-spelling:
{{ cspell_bin }} lint .
# Run all format checkers (Depends on: check-fmt, check-fmt-toml, check-fmt-prettier, check-spelling)
[group('formatting')]
check-fmt-all: check-fmt check-fmt-toml check-fmt-prettier check-spelling
# Run clippy (Uses: 'cargo +stable')
[group('lint')]
lint:
cargo +stable clippy --features syn-error,__ui_tests --all-targets -- -D warnings
cargo +nightly clippy --features nightly,syn-error,__ui_tests --all-targets -- -D warnings
# Check minimal supported Rust version (Uses: 'cargo +{{ msrv }}')
[group('lint')]
lint-msrv:
cargo +{{ msrv }} check --all
# Run cargo deny check (Uses: 'cargo-deny')
[group('dependencies')]
deny +args='all':
cargo deny check {{ args }}
# Generate and update Cargo.lock with cargo resolver v3 fallback (Uses: 'cargo +stable')
[group('dependencies')]
update-dependencies:
CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS=fallback cargo +stable update
# Check minimal version requirements of dependencies (Uses: 'cargo-minimal-versions')
[group('dependencies')]
minimal-versions:
cargo minimal-versions check --workspace --all-targets --ignore-private --direct
# Build the workspace (Uses: 'cargo')
[group('build')]
build:
cargo build --all
# Build the documentation (Uses: 'cargo')
[group('build')]
build-docs:
DOCS_RS=1 cargo doc --no-deps --workspace --document-private-items
DOCS_RS=1 cargo +nightly doc --features nightly --no-deps --workspace --document-private-items
# Run all tests (Uses: 'cargo')
[group('test')]
test:
cargo test --all
# Run all tests with nightly features (Uses: 'cargo +nightly')
[group('test')]
test-nightly:
cargo +nightly test --all --features nightly
# Run all doc tests (Uses: 'cargo')
[group('test')]
test-doc:
DOCS_RS=1 cargo test --doc
DOCS_RS=1 cargo +nightly test --features nightly --doc
# Run the UI tests (Uses: 'cargo +stable')
[group('test')]
test-ui:
cargo +stable test --features __ui_tests ui
# Run the UI tests and overwrite the error message fixtures (Uses: 'cargo +stable')
[group('test')]
test-ui-overwrite:
TRYBUILD=overwrite cargo +stable test --features __ui_tests ui
# Test all packages (Uses: 'cargo')
[group('test')]
test-all: test-ui test-nightly test-doc
cargo test --all