From 4a058cf281bc6d3eb0faeb0ef48686598be6e5af Mon Sep 17 00:00:00 2001 From: Roland Schaer Date: Thu, 23 Jan 2025 11:41:51 -0300 Subject: [PATCH 1/2] fix: elixir installation failed --- src/cli/install.rs | 5 ++++- src/cli/use.rs | 4 ++++ src/env.rs | 3 ++- src/toolset/tool_request_set.rs | 16 ++++++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/cli/install.rs b/src/cli/install.rs index 784d7de4a8..188ed9224c 100644 --- a/src/cli/install.rs +++ b/src/cli/install.rs @@ -49,7 +49,10 @@ impl Install { pub fn run(self) -> Result<()> { let config = Config::try_get()?; match &self.tool { - Some(runtime) => self.install_runtimes(&config, runtime)?, + Some(runtime) => { + crate::env::TOOL_ARGS.write().unwrap().clone_from(&runtime); + self.install_runtimes(&config, runtime)? + } None => self.install_missing_runtimes(&config)?, }; Ok(()) diff --git a/src/cli/use.rs b/src/cli/use.rs index 9668a54908..fe0d2029f4 100644 --- a/src/cli/use.rs +++ b/src/cli/use.rs @@ -101,6 +101,10 @@ impl Use { if self.tool.is_empty() && self.remove.is_empty() { self.tool = vec![self.tool_selector()?]; } + crate::env::TOOL_ARGS + .write() + .unwrap() + .clone_from(&self.tool); let config = Config::try_get()?; let mut ts = ToolsetBuilder::new() .with_global_only(self.global) diff --git a/src/env.rs b/src/env.rs index fc29317ada..bb543dc80e 100644 --- a/src/env.rs +++ b/src/env.rs @@ -1,4 +1,4 @@ -use crate::cli::args::{ENV_ARG, PROFILE_ARG}; +use crate::cli::args::{ToolArg, ENV_ARG, PROFILE_ARG}; use crate::env_diff::{EnvDiff, EnvDiffOperation, EnvDiffPatches, EnvMap}; use crate::file::replace_path; use crate::shell::ShellType; @@ -14,6 +14,7 @@ use std::sync::RwLock; use std::{path, process}; pub static ARGS: RwLock> = RwLock::new(vec![]); +pub static TOOL_ARGS: RwLock> = RwLock::new(vec![]); #[cfg(unix)] pub static SHELL: Lazy = Lazy::new(|| var("SHELL").unwrap_or_else(|_| "sh".into())); #[cfg(windows)] diff --git a/src/toolset/tool_request_set.rs b/src/toolset/tool_request_set.rs index cb17e37325..9528491e9a 100644 --- a/src/toolset/tool_request_set.rs +++ b/src/toolset/tool_request_set.rs @@ -227,6 +227,22 @@ impl ToolRequestSetBuilder { } merge(trs, arg_ts); } + + let tool_args = env::TOOL_ARGS.read().unwrap(); + let mut arg_trs = ToolRequestSet::new(); + for arg in tool_args.iter() { + if let Some(tvr) = &arg.tvr { + arg_trs.add_version(tvr.clone(), &ToolSource::Argument); + } else { + if !trs.tools.contains_key(&arg.ba) { + // no active version, so use "latest" + let tr = ToolRequest::new(arg.ba.clone(), "latest", ToolSource::Argument)?; + arg_trs.add_version(tr, &ToolSource::Argument); + } + } + } + merge(trs, arg_trs); + Ok(()) } } From 352da8ed4945a0ec3dfa44ec27980e7e495009d1 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 15:36:35 +0000 Subject: [PATCH 2/2] [autofix.ci] apply automated fixes --- src/cli/install.rs | 2 +- src/toolset/tool_request_set.rs | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/cli/install.rs b/src/cli/install.rs index 188ed9224c..fff32af44f 100644 --- a/src/cli/install.rs +++ b/src/cli/install.rs @@ -50,7 +50,7 @@ impl Install { let config = Config::try_get()?; match &self.tool { Some(runtime) => { - crate::env::TOOL_ARGS.write().unwrap().clone_from(&runtime); + crate::env::TOOL_ARGS.write().unwrap().clone_from(runtime); self.install_runtimes(&config, runtime)? } None => self.install_missing_runtimes(&config)?, diff --git a/src/toolset/tool_request_set.rs b/src/toolset/tool_request_set.rs index 9528491e9a..7562916538 100644 --- a/src/toolset/tool_request_set.rs +++ b/src/toolset/tool_request_set.rs @@ -233,12 +233,10 @@ impl ToolRequestSetBuilder { for arg in tool_args.iter() { if let Some(tvr) = &arg.tvr { arg_trs.add_version(tvr.clone(), &ToolSource::Argument); - } else { - if !trs.tools.contains_key(&arg.ba) { - // no active version, so use "latest" - let tr = ToolRequest::new(arg.ba.clone(), "latest", ToolSource::Argument)?; - arg_trs.add_version(tr, &ToolSource::Argument); - } + } else if !trs.tools.contains_key(&arg.ba) { + // no active version, so use "latest" + let tr = ToolRequest::new(arg.ba.clone(), "latest", ToolSource::Argument)?; + arg_trs.add_version(tr, &ToolSource::Argument); } } merge(trs, arg_trs);