Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/ProcessManagement/NodeResolver/
ResolveUncached.rs

1//! First-hit-wins ladder over the manager-specific lookups. Falls back to
2//! `node` on PATH if every manager misses.
3
4use std::path::PathBuf;
5
6use tauri::{AppHandle, Runtime};
7
8use crate::{
9	ProcessManagement::NodeResolver::{
10		NodeSource,
11		ResolvedNode,
12		TryAsdf,
13		TryFnm,
14		TryHomebrew,
15		TryNvm,
16		TryOverride,
17		TryShipped,
18		TryVolta,
19	},
20	dev_log,
21};
22
23pub fn Fn<R:Runtime>(ApplicationHandle:&AppHandle<R>) -> ResolvedNode::Struct {
24	if let Some(Found) = TryOverride::Fn() {
25		return Found;
26	}
27
28	if let Some(Found) = TryShipped::Fn(ApplicationHandle) {
29		return Found;
30	}
31
32	if let Some(Found) = TryFnm::Fn() {
33		return Found;
34	}
35
36	if let Some(Found) = TryVolta::Fn() {
37		return Found;
38	}
39
40	if let Some(Found) = TryAsdf::Fn() {
41		return Found;
42	}
43
44	if let Some(Found) = TryNvm::Fn() {
45		return Found;
46	}
47
48	if let Some(Found) = TryHomebrew::Fn() {
49		return Found;
50	}
51
52	dev_log!(
53		"cocoon",
54		"[NodeResolver] No specific install found; falling back to `node` on PATH"
55	);
56
57	ResolvedNode::Struct { Path:PathBuf::from("node"), Source:NodeSource::Enum::Path }
58}