Mountain/ProcessManagement/NodeResolver/TryAsdf.rs
1//! asdf shim lookup. The shim resolves the active `.tool-versions` entry on
2//! every call.
3
4use std::path::PathBuf;
5
6use crate::ProcessManagement::NodeResolver::{NodeExecutableName, NodeSource, ResolvedNode};
7
8pub fn Fn() -> Option<ResolvedNode::Struct> {
9 let AsdfDataDir = std::env::var("ASDF_DATA_DIR").ok().or_else(|| {
10 std::env::var("HOME")
11 .ok()
12 .map(|H| PathBuf::from(H).join(".asdf").to_string_lossy().into_owned())
13 })?;
14
15 let ShimCandidate = PathBuf::from(&AsdfDataDir).join("shims").join(NodeExecutableName::Fn());
16
17 if ShimCandidate.exists() {
18 return Some(ResolvedNode::Struct { Path:ShimCandidate, Source:NodeSource::Enum::Asdf });
19 }
20
21 None
22}