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
use std::fmt;
/// Identifies a supported shell.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ShellKind {
/// POSIX-compatible `sh`.
Posix,
/// GNU Bash.
Bash,
/// Zsh (Z shell).
Zsh,
/// Fish shell.
Fish,
/// Nushell.
Nushell,
/// `PowerShell` (cross-platform).
PowerShell,
/// Tcsh / csh.
Tcsh,
/// Xonsh (Python-powered shell).
Xonsh,
}
impl fmt::Display for ShellKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(match self {
Self::Posix => "sh",
Self::Bash => "Bash",
Self::Zsh => "Zsh",
Self::Fish => "Fish",
Self::Nushell => "Nushell",
Self::PowerShell => "PowerShell",
Self::Tcsh => "Tcsh",
Self::Xonsh => "Xonsh",
})
}
}