use std::sync::Mutex;
pub static ENV_MUTEX: Mutex<()> = Mutex::new(());
pub struct EnvGuard(#[allow(dead_code)] std::sync::MutexGuard<'static, ()>);
impl Drop for EnvGuard {
fn drop(&mut self) {
for var in &[
"SELFWARE_CONFIG",
"SELFWARE_ENDPOINT",
"SELFWARE_MODEL",
"SELFWARE_API_KEY",
"OPENROUTER_API_KEY",
"SELFWARE_MAX_TOKENS",
"SELFWARE_TEMPERATURE",
"SELFWARE_TIMEOUT",
"SELFWARE_THEME",
"SELFWARE_LOG_LEVEL",
"SELFWARE_MODE",
"SELFWARE_STRICT_PERMISSIONS",
] {
std::env::remove_var(var);
}
}
}
pub fn clear_env() -> EnvGuard {
let guard = ENV_MUTEX.lock().unwrap_or_else(|e| e.into_inner());
for var in &[
"SELFWARE_CONFIG",
"SELFWARE_ENDPOINT",
"SELFWARE_MODEL",
"SELFWARE_API_KEY",
"OPENROUTER_API_KEY",
"SELFWARE_MAX_TOKENS",
"SELFWARE_TEMPERATURE",
"SELFWARE_TIMEOUT",
"SELFWARE_THEME",
"SELFWARE_LOG_LEVEL",
"SELFWARE_MODE",
"SELFWARE_STRICT_PERMISSIONS",
] {
std::env::remove_var(var);
}
EnvGuard(guard)
}