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 /// Shipped with Mountain - `Resources/Node/bin/node` or dev-tree
12 /// equivalent.
13 Shipped,
14 /// fnm's `current/bin/node`.
15 Fnm,
16 /// Volta's `tools/image/node/<version>/bin/node`.
17 Volta,
18 /// asdf's `shims/node` - resolves via `.tool-versions`.
19 Asdf,
20 /// nvm's `versions/node/<default>/bin/node`.
21 Nvm,
22 /// Homebrew - `/opt/homebrew/bin/node` (Apple Silicon) or
23 /// `/usr/local/bin/node` (Intel macOS / Linuxbrew).
24 Homebrew,
25 /// PATH-resolved `node` - last-resort fallback.
26 Path,
27}
28
29impl Enum {
30 pub fn AsLabel(self) -> &'static str {
31 match self {
32 Self::Override => "override",
33 Self::Shipped => "shipped",
34 Self::Fnm => "fnm",
35 Self::Volta => "volta",
36 Self::Asdf => "asdf",
37 Self::Nvm => "nvm",
38 Self::Homebrew => "homebrew",
39 Self::Path => "path",
40 }
41 }
42}