4 releases
0.1.3 | Mar 27, 2021 |
---|---|
0.1.2 | Mar 27, 2021 |
0.1.1 | Mar 26, 2021 |
0.1.0 | Mar 26, 2021 |
#233 in Caching
Used in yair
7KB
62 lines
🏴☠️ envcache
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