set dotenv-load := true rustc-version := "nightly" publish-registry := "shipyard-rs-public" repository := "https://git.shipyard.rs/jstrong/registry-backup" # complicated/ugly one-liner to use lld linker if it's available export RUSTFLAGS := `LLD=$(which lld) && test $? -eq "0" && echo "-C link-arg=-fuse-ld=lld" || echo ''` # cargo wrapper; executes a cargo command using the settings in justfile (RUSTFLAGS, etc.) cargo +args='': cargo +{{rustc-version}} {{args}} # cargo check wrapper check +args='': @just cargo check {{args}} # cargo test wrapper test +args='': just cargo test {{args}} # cargo build wrapper - builds registry-backup in debug mode debug-build +args='': @just cargo build --bin registry-backup {{args}} # cargo build --release wrapper - builds registry-backup in release mode release-build +args='': @just cargo build --bin registry-backup --release {{args}} # generate updated README.md generate-readme: just debug-build ./target/debug/registry-backup --help > doc/cli-menu.txt just --list > doc/just-commands.txt just cargo run --bin generate-readme --features docs # check, run tests, check non-error output for clippy, run rustfmt pre-release: just cargo check \ && just cargo test \ && just cargo clippy \ && just cargo fmt # verify no uncommitted changes verify-clean-git: test "$(echo `git status --porcelain` | wc -c)" -eq "1" get-crate-version: @cat Cargo.toml | rg '^version =' | sed -e 's/^version\s*=\s*//' | tr -d '"' # re-generate README.md and overwrite existing file with output update-readme: just generate-readme > README.md # re-generate, overwrite, and stage changes update-readme-and-stage: update-readme git add README.md doc/*.txt # re-generate, overwrite, stage, and commit update-readme-and-commit: update-readme-and-stage git commit -m 're-generate docs' # get everything all ready for release release-prep: just pre-release just verify-clean-git VERSION=$(just get-crate-version) \ && test -z "$(git tag | rg \"v${VERSION}\")" # Error: tag appears to exist already just update-readme-and-commit # release version (regenerate docs, git tag v0.0.0) release: release-prep git tag "v$(just get-crate-version)" git push && git push --tags # diagnostic command for viewing value of build variables at runtime show-build-env: @echo "registry-backup v$(just get-crate-version)" @echo "rustc-version={{rustc-version}}" @echo "publish-registry={{publish-registry}}" @env | rg RUST --color never # cargo install registry-backup via git dep install: just cargo install registry-backup --git {{repository}}