1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#[derive(PartialEq)]
pub(crate) enum Shell {
Sh,
Bash,
Fish,
Zsh,
Xonsh,
Nu,
Powershell,
Unknown,
}
impl std::fmt::Display for Shell {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let shell = match self {
Self::Bash => "bash",
Self::Fish => "fish",
Self::Zsh => "zsh",
Self::Nu => "nu",
Self::Xonsh => "xonsh",
Self::Sh => "sh",
Self::Powershell => "powershell",
Self::Unknown => "unknown",
};
write!(f, "{shell}")
}
}
impl Shell {
pub(crate) fn from_env() -> Self {
std::env::var("ATUIN_SHELL").map_or(Self::Unknown, |shell| {
Self::from_string(shell.trim().to_lowercase().as_str())
})
}
pub(crate) fn from_string(name: &str) -> Self {
match name {
"bash" => Self::Bash,
"fish" => Self::Fish,
"zsh" => Self::Zsh,
"xonsh" => Self::Xonsh,
"nu" => Self::Nu,
"sh" => Self::Sh,
"powershell" => Self::Powershell,
_ => Self::Unknown,
}
}
}
|