Crates.io | envcache |
lib.rs | envcache |
version | 0.1.3 |
source | src |
created_at | 2021-03-26 21:44:30.610457 |
updated_at | 2021-03-27 17:26:11.68072 |
description | A build.rs helper crate for caching environment variables |
homepage | |
repository | https://github.com/sheredom/envcache |
max_upload_size | |
id | 373961 |
size | 6,588 |
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