Mountain/ProcessManagement/NodeResolver/
ResolveUncached.rs1use 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}