Mountain/ProcessManagement/NodeResolver/TryVolta.rs
1#![allow(non_snake_case)]
2
3//! Volta shim lookup. `VOLTA_HOME` wins; otherwise `~/.volta`. Volta installs
4//! shim binaries under `<VOLTA_HOME>/bin`.
5
6use std::path::PathBuf;
7
8use crate::ProcessManagement::NodeResolver::{NodeExecutableName, NodeSource, ResolvedNode};
9
10pub fn Fn() -> Option<ResolvedNode::Struct> {
11 let VoltaHome = std::env::var("VOLTA_HOME").ok().or_else(|| {
12 std::env::var("HOME")
13 .ok()
14 .map(|H| PathBuf::from(H).join(".volta").to_string_lossy().into_owned())
15 })?;
16
17 let ShimCandidate = PathBuf::from(&VoltaHome).join("bin").join(NodeExecutableName::Fn());
18 if ShimCandidate.exists() {
19 return Some(ResolvedNode::Struct { Path:ShimCandidate, Source:NodeSource::Enum::Volta });
20 }
21 None
22}