AdventOfCode/Rust/justfile

61 lines
1.5 KiB
Makefile

alias e := example
alias r := run
alias t := test
alias b := bench
alias y := year
alias ya := year-all
alias ty := test-year
alias by := bench-year
alias ta := test-all
alias ba := bench-all
alias hf := hyperfine
alias hfe := hyperfine-example
alias hfy := hyperfine-year
target := `cargo metadata --format-version=1 | jq -r .target_directory`
_default:
@just --list
example year day ex:
cargo run --bin {{year}}_{{day}} -- ../examples/{{year}}/{{trim_start_match(day, "0")}}/{{ex}}
run year day *args:
cargo run --bin {{year}}_{{day}} {{args}}
test year day *args:
cargo test --bin {{year}}_{{day}} {{args}}
bench year day *args:
cargo bench --bin {{year}}_{{day}} {{args}}
year year *args:
cargo run --bin {{year}} {{args}}
test-year year *args:
cargo test --bin '{{year}}_*' {{args}}
bench-year year *args:
cargo bench --bin '{{year}}_*' {{args}}
test-all *args:
cargo test --bin '*' {{args}}
bench-all *args:
cargo bench --bin '*' {{args}}
year-all *args:
@set -e; for year in *; do [[ -f $year/main.rs ]] || continue; just year $year {{args}}; done
build year day:
cargo build --release --bin {{year}}_{{day}}
hyperfine year day *args: (build year day)
hyperfine {{args}} {{target}}/release/{{year}}_{{day}}
hyperfine-example year day ex *args: (build year day)
hyperfine {{args}} '{{target}}/release/{{year}}_{{day}} ../examples/{{year}}/{{trim_start_match(day, "0")}}/{{ex}}'
hyperfine-year year *args:
cargo build --release --bin {{year}}
hyperfine {{args}} {{target}}/release/{{year}}