#!/usr/bin/env just --justfile
_CARGO_TARGET_DIR := env_var_or_default("CARGO_TARGET_DIR", "target")
alias t := test
alias l := lint
alias c := check
alias cov := coverage-report
alias r := generate-readme
alias s := setup
alias pub := publish
default: check lint test
setup:
cargo install cargo-readme
cargo install cargo-depgraph
cargo install grcov
cargo install committed
cargo install cargo-deny
cargo install cargo-audit --features=fix
cargo install typos-cli
# pip install codespell
# Run all the tests
test:
cargo test
# Check the program with all features enabled.
check:
cargo check
cargo deny check
cargo deny check licenses
committed aurora..HEAD --no-merge-commit
cargo audit
typos
# codespell --skip="target,.git,_typos.toml,CHANGELOG.md" -H --ignore-words="{{justfile_directory()}}/.codespellignore"
@lint:
cargo fmt --all -- --check --verbose
cargo clippy --verbose --all-targets -- -D warnings
# Run the tests, and generate a coverage report
coverage:
CARGO_INCREMENTAL=0 RUSTFLAGS="-Cinstrument-coverage" LLVM_PROFILE_FILE="{{_CARGO_TARGET_DIR}}/coverage/data/cargo-test-%p-%m.profraw" cargo test
# Generate the coverage report
coverage-report: coverage
# Generate the report in html format using grcov
grcov . --binary-path {{_CARGO_TARGET_DIR}}/debug/deps/ -s . -t html --branch --ignore-not-existing --ignore "../*" -o {{_CARGO_TARGET_DIR}}/coverage/report/ --llvm --ignore "/*"
# Open the report in the browser
xdg-open {{_CARGO_TARGET_DIR}}/coverage/report/index.html
# Generate the readme file
generate-readme:
cargo readme --template _readme.tpl > README.md
sed -i "s/\*\*Note\*\*/\[!Note\]/g" README.md
cargo depgraph --all-features --all-deps | dot -Tpng > _deps.png
# Push the code to all remotes
push FLAGS="-u" BRANSH="aurora":
git push {{FLAGS}} github {{BRANSH}}
git push {{FLAGS}} gitlab {{BRANSH}}
git push {{FLAGS}} codeberg {{BRANSH}}
git push {{FLAGS}} disroot {{BRANSH}}
git push {{FLAGS}} tangled {{BRANSH}}
git push {{FLAGS}} codefloe {{BRANSH}}
# Push the git tags to all remotes
pusht: push
git push --tags github
git push --tags gitlab
git push --tags codeberg
git push --tags disroot
git push --tags tangled
git push --tags codefloe
# Publish the crate to crates.io
publish:
cargo publish
clean:
git clean -fdx