envcache

Crates.ioenvcache
lib.rsenvcache
version0.1.3
sourcesrc
created_at2021-03-26 21:44:30.610457
updated_at2021-03-27 17:26:11.68072
descriptionA build.rs helper crate for caching environment variables
homepage
repositoryhttps://github.com/sheredom/envcache
max_upload_size
id373961
size6,588
Neil Henning (sheredom)

documentation

README

🏴‍☠️ envcache

Actions Status Crates.io API Docs

The envcache crate (environment cache) lets users cache environmental variables in a build.rs script, so that subsequent calls to cargo are not required to be ran with the same variable specified.

For example, let's assume you have a build.rs that requires SOME_VAR to be specified for work. Maybe its a path to some library that lives outside of the Rust ecosystem (like LLVM):

SOME_VAR=42 cargo test
cargo clippy # Will fail because SOME_VAR is not set

This would fail because the run to cargo clippy requires that it is run with SOME_VAR=42. With the envcache, we can use a build.rs that ensures this will run:

use envcache;
# std::env::set_var("OUT_DIR", std::env::temp_dir());
let mut envcache = envcache::EnvCache::new();
envcache.cache("SOME_VAR");

Now if we run this again:

SOME_VAR=42 cargo test
cargo clippy # SOME_VAR will be 42

You can change a previously set cached variable by simply re-specifying it on the command line:

SOME_VAR=42 cargo test
SOME_VAR=13 cargo test
cargo test # SOME_VAR will be 13!

Note that running cargo clean will remove any previously cached variables, so running:

SOME_VAR=42 cargo test
cargo clippy # Will work because we've cached SOME_VAR
cargo clean
cargo test # Will fail because SOME_VAR won't be set
Commit count: 10

cargo fmt