From a537464a915aea2e38c62df041996b8525367bde Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 16 Jan 2022 22:50:22 -0500 Subject: move default environment variable setting to shell initialization --- src/env.rs | 17 +++++++++-------- src/shell/mod.rs | 5 ++++- 2 files changed, 13 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/env.rs b/src/env.rs index bf6cb6c..981d8fc 100644 --- a/src/env.rs +++ b/src/env.rs @@ -26,19 +26,13 @@ pub struct V0 { impl Env { pub fn new() -> anyhow::Result { - let mut vars: std::collections::HashMap< - std::ffi::OsString, - std::ffi::OsString, - > = std::env::vars_os().collect(); - vars.insert("SHELL".into(), std::env::current_exe()?.into()); - vars.insert("TERM".into(), "screen".into()); let pwd = std::env::current_dir()?; Ok(Self::V0(V0 { idx: 0, latest_status: std::process::ExitStatus::from_raw(0), pwd: pwd.clone(), prev_pwd: crate::mutex::new(pwd), - vars, + vars: std::env::vars_os().collect(), })) } @@ -85,7 +79,14 @@ impl Env { } } - pub fn set_var>(&mut self, k: T, v: T) { + pub fn set_var< + K: Into, + V: Into, + >( + &mut self, + k: K, + v: V, + ) { match self { Self::V0(env) => { env.vars.insert(k.into(), v.into()); diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 0547bae..8343b0e 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -212,10 +212,13 @@ pub struct Shell { impl Shell { pub fn new(offset: time::UtcOffset) -> anyhow::Result { + let mut env = Env::new()?; + env.set_var("SHELL", std::env::current_exe()?); + env.set_var("TERM", "screen"); Ok(Self { readline: readline::Readline::new(), history: history::History::new(), - env: Env::new()?, + env, git: None, focus: Focus::Readline, scene: Scene::Readline, -- cgit v1.2.3-54-g00ecf