use std::path::Path;
use crate::session_user::SessionUser;
#[allow(dead_code)]
pub fn locate_windows_executable(
args: &[String],
_user: Option<&dyn SessionUser>,
os_env_vars: Option<&std::collections::HashMap<String, Option<String>>>,
working_dir: &str,
) -> Vec<String> {
let mut result = args.to_vec();
let cmd = Path::new(&args[0]);
if cmd.is_absolute() {
return result;
}
let path_var = os_env_vars
.and_then(|env| {
env.iter()
.find(|(k, _)| k.eq_ignore_ascii_case("path"))
.and_then(|(_, v)| v.as_ref().map(|s| s.as_str()))
})
.or_else(|| std::env::var("PATH").ok().as_deref().map(|_| ""))
.unwrap_or("");
let search_path = format!("{};{}", working_dir, path_var);
match which::which_in(&args[0], Some(&search_path), working_dir) {
Ok(found) => {
result[0] = found.to_string_lossy().to_string();
}
Err(_) => {
}
}
result
}