set dotenv-load
help:
@just --list
format:
cargo fmt
build: format
cargo build
## (cargo build --release) && upx target/release/resource-tracker
build_release: format
cargo build --release
install: build_release
(mkdir -p ~/bin) && cp -p ./target/release/resource-tracker ~/bin && echo "resource-tracker is now installed in ~/bin"
run_only_show_key_names:
target/release/resource-tracker --interval 3 | jq -r 'paths(scalars) as $p | "\($p | join(".")): \(getpath($p) | type)"'
# Build mdbook and then cargo doc bundled inside, then open the main page
document:
(cd resource-tracker-rs-book && mdbook build) & cargo doc --no-deps --offline --target-dir resource-tracker-rs-book/book/cargo/ & wait
xdg-open resource-tracker-rs-book/book/index.html &
test:
cargo test -- --test-threads=1
real_test1: build_release
./target/release/resource-tracker --format csv
real_test2: build_release
./target/release/resource-tracker --format csv Rscript stress.r
real_test3: build_release
./target/release/resource-tracker --format csv Rscript stress.r --cpu 4 --vm 1 --vm-bytes 12024M --timeout 63s
report_coverage:
cargo llvm-cov --bins --html --open -- --test-threads=1
## Audit dependencies for known vulnerabilities
audit:
@command -v cargo-audit >/dev/null 2>&1 || cargo install cargo-audit --locked
cargo audit
outdated:
@command -v cargo-outdated >/dev/null 2>&1 || cargo install cargo-outdated --locked
cargo outdated
## Stub for possisble future use:
## # Install Python resource-tracker via uv
## bench_setup:
## cd benchmarks && uv sync
##
## # Run both trackers simultaneously for 60 s, CSV output on both sides
## bench_run:
## mkdir -p benchmarks/results
## bash benchmarks/run_rust.sh &
## cd benchmarks && uv run python run_python.py
## wait
##
## # Compare outputs and print diff table
## bench_compare:
## cd benchmarks && uv run python compare.py
##
## # Full pipeline
## benchmark: bench_setup bench_run bench_compare
##