The cross-platform version manager toolset
crates.io/crates/hyper-jump
1use std::path::PathBuf;
2
3use crate::ports::Env;
4
5#[derive(Clone, Copy)]
6pub struct StdEnv;
7
8impl Env for StdEnv {
9 fn exe_name(&self) -> String {
10 std::env::args()
11 .next()
12 .as_deref()
13 .and_then(|p| std::path::Path::new(p).file_stem())
14 .and_then(|s| s.to_str())
15 .unwrap_or_default()
16 .to_string()
17 }
18
19 fn args(&self) -> Vec<String> { std::env::args().collect() }
20 fn root_dir(&self) -> Option<PathBuf> {
21 std::env::var_os("HYPER_JUMP_ROOT_DIR").map(PathBuf::from)
22 }
23 fn packages_file(&self) -> Option<PathBuf> {
24 std::env::var_os("HYPER_JUMP_PACKAGES_FILE").map(PathBuf::from)
25 }
26 fn home_dir(&self) -> Option<PathBuf> { std::env::var_os("HOME").map(PathBuf::from) }
27 fn current_exe(&self) -> anyhow::Result<PathBuf> { Ok(std::env::current_exe()?) }
28 fn path_var(&self) -> Option<String> { std::env::var("PATH").ok() }
29}