From 655819db8bbce7d5dcae942b13211cc44794f27f Mon Sep 17 00:00:00 2001 From: David Lattimore Date: Sun, 14 Aug 2022 15:42:06 +1000 Subject: [PATCH] DRAFT: Use tools from same directory as cargo in preference to PATH --- src/cargo/util/config/mod.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/cargo/util/config/mod.rs b/src/cargo/util/config/mod.rs index dd3f6ae933e..f9b0198a12b 100644 --- a/src/cargo/util/config/mod.rs +++ b/src/cargo/util/config/mod.rs @@ -1492,11 +1492,19 @@ impl Config { } } + fn default_tool_path(&self, tool: &str) -> PathBuf { + std::env::current_exe() + .ok() + .and_then(|exe| exe.parent().map(|exe_dir| exe_dir.join(tool))) + .filter(|tool_path| tool_path.exists()) + .unwrap_or_else(|| PathBuf::from(tool)) + } + /// Looks for a path for `tool` in an environment variable or config path, defaulting to `tool` /// as a path. fn get_tool(&self, tool: &str, from_config: &Option) -> PathBuf { self.maybe_get_tool(tool, from_config) - .unwrap_or_else(|| PathBuf::from(tool)) + .unwrap_or_else(|| self.default_tool_path(tool)) } pub fn jobserver_from_env(&self) -> Option<&jobserver::Client> {