use std::path::PathBuf;
pub fn binary_path(binary_name: &str, required_version: &str) -> PathBuf {
cargo_tools_root()
.join(format!("{binary_name}-{required_version}"))
.join("bin")
.join(binary_name)
}
fn cargo_tools_root() -> PathBuf {
if let Ok(p) = std::env::var("CARGO_TOOLS_ROOT") {
return PathBuf::from(p);
}
let cargo_home = std::env::var("CARGO_HOME").map(PathBuf::from).unwrap_or_else(|_| {
PathBuf::from(std::env::var("HOME").expect("HOME must be set")).join(".cargo")
});
cargo_home.join("tools")
}