Skip to main content

Mountain/ProcessManagement/NodeResolver/
TryAsdf.rs

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