use std::path::Path;
mod cache_trim;
mod client_env;
mod compiler_hash;
mod fingerprint;
mod link_cache;
mod pack;
mod pch;
mod post_link_hook;
mod server_ipc;
mod write_cached;
pub(super) struct CacheDirEnvGuard {
previous: Option<std::ffi::OsString>,
}
impl CacheDirEnvGuard {
pub(super) fn set(path: &Path) -> Self {
let previous = std::env::var_os(crate::core::config::CACHE_DIR_ENV);
std::env::set_var(crate::core::config::CACHE_DIR_ENV, path);
Self { previous }
}
}
impl Drop for CacheDirEnvGuard {
fn drop(&mut self) {
match &self.previous {
Some(previous) => std::env::set_var(crate::core::config::CACHE_DIR_ENV, previous),
None => std::env::remove_var(crate::core::config::CACHE_DIR_ENV),
}
}
}