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}