Skip to main content

Mountain/ProcessManagement/NodeResolver/
NodeSource.rs

1
2//! Where the resolved Node binary came from. Ordered by preference (override
3//! first, PATH last). `AsLabel` returns the lowercase ident used in log
4//! lines.
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum Enum {
8	/// `Pick` environment variable.
9	Override,
10
11	/// Shipped with Mountain - `Resources/Node/bin/node` or dev-tree
12	/// equivalent.
13	Shipped,
14
15	/// fnm's `current/bin/node`.
16	Fnm,
17
18	/// Volta's `tools/image/node/<version>/bin/node`.
19	Volta,
20
21	/// asdf's `shims/node` - resolves via `.tool-versions`.
22	Asdf,
23
24	/// nvm's `versions/node/<default>/bin/node`.
25	Nvm,
26
27	/// Homebrew - `/opt/homebrew/bin/node` (Apple Silicon) or
28	/// `/usr/local/bin/node` (Intel macOS / Linuxbrew).
29	Homebrew,
30
31	/// PATH-resolved `node` - last-resort fallback.
32	Path,
33}
34
35impl Enum {
36	pub fn AsLabel(self) -> &'static str {
37		match self {
38			Self::Override => "override",
39
40			Self::Shipped => "shipped",
41
42			Self::Fnm => "fnm",
43
44			Self::Volta => "volta",
45
46			Self::Asdf => "asdf",
47
48			Self::Nvm => "nvm",
49
50			Self::Homebrew => "homebrew",
51
52			Self::Path => "path",
53		}
54	}
55}