Skip to main content

Mountain/ProcessManagement/NodeResolver/
NodeSource.rs

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