From 29ea4b247074209c236ea2fb1cd30422d27d9d6e Mon Sep 17 00:00:00 2001 From: Jeff Dickey <216188+jdx@users.noreply.github.com> Date: Tue, 12 Dec 2023 13:49:37 -0600 Subject: [PATCH] remove &muts --- src/cli/asdf.rs | 4 ++-- src/cli/bin_paths.rs | 4 ++-- src/cli/current.rs | 4 ++-- src/cli/direnv/envrc.rs | 4 ++-- src/cli/direnv/exec.rs | 4 ++-- src/cli/doctor.rs | 4 ++-- src/cli/env.rs | 8 +++----- src/cli/exec.rs | 8 +++----- src/cli/hook_env.rs | 4 ++-- src/cli/install.rs | 6 +++--- src/cli/latest.rs | 4 ++-- src/cli/local.rs | 4 ++-- src/cli/ls.rs | 4 ++-- src/cli/ls_remote.rs | 4 ++-- src/cli/outdated.rs | 6 ++---- src/cli/plugins/install.rs | 20 ++++++++------------ src/cli/prune.rs | 4 ++-- src/cli/reshim.rs | 4 ++-- src/cli/shell.rs | 8 +++----- src/cli/uninstall.rs | 6 +++--- src/cli/upgrade.rs | 8 +++----- src/cli/use.rs | 8 +++----- src/cli/where.rs | 4 ++-- src/cli/which.rs | 4 ++-- src/config/mod.rs | 7 +++---- src/shims.rs | 4 ++-- src/toolset/mod.rs | 10 ++++------ 27 files changed, 70 insertions(+), 89 deletions(-) diff --git a/src/cli/asdf.rs b/src/cli/asdf.rs index feb073e3bc..06ec017dd6 100644 --- a/src/cli/asdf.rs +++ b/src/cli/asdf.rs @@ -36,7 +36,7 @@ impl Asdf { } } -fn list_versions(mut config: Config, out: &mut Output, args: &Vec) -> Result<()> { +fn list_versions(config: Config, out: &mut Output, args: &Vec) -> Result<()> { if args[2] == "all" { let mut new_args: Vec = vec!["rtx".into(), "ls-remote".into()]; if args.len() >= 3 { @@ -44,7 +44,7 @@ fn list_versions(mut config: Config, out: &mut Output, args: &Vec) -> Re } return Cli::new().run(config, &new_args, out); } - let ts = ToolsetBuilder::new().build(&mut config)?; + let ts = ToolsetBuilder::new().build(&config)?; let mut versions = ts.list_installed_versions(&config)?; let plugin = match args.len() { 3 => Some(&args[2]), diff --git a/src/cli/bin_paths.rs b/src/cli/bin_paths.rs index 0edcfc6b36..c05327f059 100644 --- a/src/cli/bin_paths.rs +++ b/src/cli/bin_paths.rs @@ -10,8 +10,8 @@ use crate::toolset::ToolsetBuilder; pub struct BinPaths {} impl BinPaths { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; for p in ts.list_paths(&config) { rtxprintln!(out, "{}", p.display()); } diff --git a/src/cli/current.rs b/src/cli/current.rs index 8c9c1efac5..92fc67b4cb 100644 --- a/src/cli/current.rs +++ b/src/cli/current.rs @@ -20,8 +20,8 @@ pub struct Current { } impl Current { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; match &self.plugin { Some(plugin_name) => { let plugin_name = unalias_plugin(plugin_name); diff --git a/src/cli/direnv/envrc.rs b/src/cli/direnv/envrc.rs index 1d3af25a92..651cbf5aed 100644 --- a/src/cli/direnv/envrc.rs +++ b/src/cli/direnv/envrc.rs @@ -17,8 +17,8 @@ use crate::{dirs, env}; pub struct Envrc {} impl Envrc { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; let envrc_path = env::RTX_TMP_DIR .join("direnv") diff --git a/src/cli/direnv/exec.rs b/src/cli/direnv/exec.rs index eaf428b946..70d3e4cfe2 100644 --- a/src/cli/direnv/exec.rs +++ b/src/cli/direnv/exec.rs @@ -20,8 +20,8 @@ struct DirenvWatches { } impl DirenvExec { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; let mut cmd = env_cmd(); diff --git a/src/cli/doctor.rs b/src/cli/doctor.rs index b91cfa6d72..a1bfbee51c 100644 --- a/src/cli/doctor.rs +++ b/src/cli/doctor.rs @@ -22,8 +22,8 @@ use crate::{duration, env}; pub struct Doctor {} impl Doctor { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; rtxprintln!(out, "{}", rtx_version()); rtxprintln!(out, "{}", build_info()); rtxprintln!(out, "{}", shell()); diff --git a/src/cli/env.rs b/src/cli/env.rs index 985cc7100b..2d3f7b235b 100644 --- a/src/cli/env.rs +++ b/src/cli/env.rs @@ -27,11 +27,9 @@ pub struct Env { } impl Env { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let mut ts = ToolsetBuilder::new() - .with_args(&self.tool) - .build(&mut config)?; - ts.install_arg_versions(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let mut ts = ToolsetBuilder::new().with_args(&self.tool).build(&config)?; + ts.install_arg_versions(&config)?; if self.json { self.output_json(config, out, ts) diff --git a/src/cli/exec.rs b/src/cli/exec.rs index 74b52c7948..ba9cb35834 100644 --- a/src/cli/exec.rs +++ b/src/cli/exec.rs @@ -45,11 +45,9 @@ pub struct Exec { } impl Exec { - pub fn run(self, mut config: Config, _out: &mut Output) -> Result<()> { - let mut ts = ToolsetBuilder::new() - .with_args(&self.tool) - .build(&mut config)?; - ts.install_arg_versions(&mut config)?; + pub fn run(self, config: Config, _out: &mut Output) -> Result<()> { + let mut ts = ToolsetBuilder::new().with_args(&self.tool).build(&config)?; + ts.install_arg_versions(&config)?; let (program, args) = parse_command(&env::SHELL, &self.command, &self.c); let env = ts.env_with_path(&config); diff --git a/src/cli/hook_env.rs b/src/cli/hook_env.rs index 767dc37a98..817c8689e1 100644 --- a/src/cli/hook_env.rs +++ b/src/cli/hook_env.rs @@ -32,8 +32,8 @@ pub struct HookEnv { } impl HookEnv { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; let shell = get_shell(self.shell).expect("no shell provided, use `--shell=zsh`"); out.stdout.write(hook_env::clear_old_env(&*shell)); let mut env = ts.env(&config); diff --git a/src/cli/install.rs b/src/cli/install.rs index 8ca110f9b3..a6bb7ebc1e 100644 --- a/src/cli/install.rs +++ b/src/cli/install.rs @@ -42,12 +42,12 @@ impl Install { Ok(()) } - fn install_runtimes(&self, mut config: Config, runtimes: &[ToolArg]) -> Result<()> { + fn install_runtimes(&self, config: Config, runtimes: &[ToolArg]) -> Result<()> { let mpr = MultiProgressReport::new(&config.settings); let mut ts = ToolsetBuilder::new() .with_latest_versions() - .build(&mut config)?; - let tool_versions = self.get_requested_tool_versions(&mut config, &ts, runtimes, &mpr)?; + .build(&config)?; + let tool_versions = self.get_requested_tool_versions(&config, &ts, runtimes, &mpr)?; if tool_versions.is_empty() { warn!("no runtimes to install"); warn!("specify a version with `rtx install @`"); diff --git a/src/cli/latest.rs b/src/cli/latest.rs index 76a73336f8..1f8d01ff7b 100644 --- a/src/cli/latest.rs +++ b/src/cli/latest.rs @@ -26,7 +26,7 @@ pub struct Latest { } impl Latest { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { let mut prefix = match self.tool.tvr { None => self.asdf_version, Some(ToolVersionRequest::Version(_, version)) => Some(version), @@ -37,7 +37,7 @@ impl Latest { }; let plugin = config.get_or_create_plugin(&self.tool.plugin); - plugin.ensure_installed(&mut config, None, false)?; + plugin.ensure_installed(&config, None, false)?; if let Some(v) = prefix { prefix = Some(config.resolve_alias(plugin.name(), &v)?); } diff --git a/src/cli/local.rs b/src/cli/local.rs index e57838cc60..89f2e34565 100644 --- a/src/cli/local.rs +++ b/src/cli/local.rs @@ -93,7 +93,7 @@ pub fn get_parent_path() -> Result { #[allow(clippy::too_many_arguments)] pub fn local( - mut config: Config, + config: Config, out: &mut Output, path: &Path, runtime: Vec, @@ -128,7 +128,7 @@ pub fn local( return Ok(()); } let pin = pin || (config.settings.asdf_compat && !fuzzy); - cf.add_runtimes(&mut config, &runtimes, pin)?; + cf.add_runtimes(&config, &runtimes, pin)?; let tools = runtimes.iter().map(|r| r.to_string()).join(" "); rtxprintln!( out, diff --git a/src/cli/ls.rs b/src/cli/ls.rs index 98a6f93d2f..e18a8d2d45 100644 --- a/src/cli/ls.rs +++ b/src/cli/ls.rs @@ -59,7 +59,7 @@ pub struct Ls { } impl Ls { - pub fn run(mut self, mut config: Config, out: &mut Output) -> Result<()> { + pub fn run(mut self, config: Config, out: &mut Output) -> Result<()> { self.plugin = self .plugin .clone() @@ -67,7 +67,7 @@ impl Ls { .map(|p| PluginName::from(unalias_plugin(&p))); self.verify_plugin(&config)?; - let mut runtimes = self.get_runtime_list(&mut config)?; + let mut runtimes = self.get_runtime_list(&config)?; if self.current || self.global { // TODO: global is a little weird: it will show global versions as the active ones even if // they're overridden locally diff --git a/src/cli/ls_remote.rs b/src/cli/ls_remote.rs index eee00ea219..f49afb8fad 100644 --- a/src/cli/ls_remote.rs +++ b/src/cli/ls_remote.rs @@ -33,8 +33,8 @@ pub struct LsRemote { } impl LsRemote { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - if let Some(plugin) = self.get_plugin(&mut config)? { + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + if let Some(plugin) = self.get_plugin(&config)? { self.run_single(config, out, plugin) } else { self.run_all(config, out) diff --git a/src/cli/outdated.rs b/src/cli/outdated.rs index ca78237cda..d2da32457d 100644 --- a/src/cli/outdated.rs +++ b/src/cli/outdated.rs @@ -22,10 +22,8 @@ pub struct Outdated { } impl Outdated { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let mut ts = ToolsetBuilder::new() - .with_args(&self.tool) - .build(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let mut ts = ToolsetBuilder::new().with_args(&self.tool).build(&config)?; let tool_set = self .tool .iter() diff --git a/src/cli/plugins/install.rs b/src/cli/plugins/install.rs index 1682de72de..b3c72ba06d 100644 --- a/src/cli/plugins/install.rs +++ b/src/cli/plugins/install.rs @@ -46,14 +46,14 @@ pub struct PluginsInstall { } impl PluginsInstall { - pub fn run(self, mut config: Config, _out: &mut Output) -> Result<()> { + pub fn run(self, config: Config, _out: &mut Output) -> Result<()> { let mpr = MultiProgressReport::new(&config.settings); if self.all { return self.install_all_missing_plugins(config, mpr); } let (name, git_url) = get_name_and_url(&self.new_plugin.clone().unwrap(), &self.git_url)?; if git_url.is_some() { - self.install_one(&mut config, name, git_url, &mpr)?; + self.install_one(&config, name, git_url, &mpr)?; } else { let mut plugins: Vec = vec![name]; if let Some(second) = self.git_url.clone() { @@ -66,13 +66,9 @@ impl PluginsInstall { Ok(()) } - fn install_all_missing_plugins( - &self, - mut config: Config, - mpr: MultiProgressReport, - ) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; - let missing_plugins = ts.list_missing_plugins(&mut config); + fn install_all_missing_plugins(&self, config: Config, mpr: MultiProgressReport) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; + let missing_plugins = ts.list_missing_plugins(&config); if missing_plugins.is_empty() { warn!("all plugins already installed"); } @@ -82,12 +78,12 @@ impl PluginsInstall { fn install_many( &self, - mut config: Config, + config: Config, plugins: Vec, mpr: MultiProgressReport, ) -> Result<()> { for plugin in plugins { - self.install_one(&mut config, plugin, None, &mpr)?; + self.install_one(&config, plugin, None, &mpr)?; } Ok(()) // TODO: run in parallel @@ -97,7 +93,7 @@ impl PluginsInstall { // .install(|| -> Result<()> { // plugins // .into_par_iter() - // .map(|plugin| self.install_one(&mut config, plugin, None, &mpr)) + // .map(|plugin| self.install_one(&config, plugin, None, &mpr)) // .collect::>>()?; // Ok(()) // }) diff --git a/src/cli/prune.rs b/src/cli/prune.rs index bbfc0430d8..420cdf35e7 100644 --- a/src/cli/prune.rs +++ b/src/cli/prune.rs @@ -30,8 +30,8 @@ pub struct Prune { } impl Prune { - pub fn run(self, mut config: Config, _out: &mut Output) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; + pub fn run(self, config: Config, _out: &mut Output) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; let mut to_delete = ts .list_installed_versions(&config)? .into_iter() diff --git a/src/cli/reshim.rs b/src/cli/reshim.rs index efadbf474b..bb565aa41b 100644 --- a/src/cli/reshim.rs +++ b/src/cli/reshim.rs @@ -30,8 +30,8 @@ pub struct Reshim { } impl Reshim { - pub fn run(self, mut config: Config, _out: &mut Output) -> Result<()> { - let ts = ToolsetBuilder::new().build(&mut config)?; + pub fn run(self, config: Config, _out: &mut Output) -> Result<()> { + let ts = ToolsetBuilder::new().build(&config)?; shims::reshim(&config, &ts) } diff --git a/src/cli/shell.rs b/src/cli/shell.rs index 4d84127589..a1f1d4dc7b 100644 --- a/src/cli/shell.rs +++ b/src/cli/shell.rs @@ -23,15 +23,13 @@ pub struct Shell { } impl Shell { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { if !config.is_activated() { err_inactive()?; } - let mut ts = ToolsetBuilder::new() - .with_args(&self.tool) - .build(&mut config)?; - ts.install_arg_versions(&mut config)?; + let mut ts = ToolsetBuilder::new().with_args(&self.tool).build(&config)?; + ts.install_arg_versions(&config)?; let shell = get_shell(None).expect("no shell detected"); diff --git a/src/cli/uninstall.rs b/src/cli/uninstall.rs index 9f1ebc33e2..b20ab9a049 100644 --- a/src/cli/uninstall.rs +++ b/src/cli/uninstall.rs @@ -26,7 +26,7 @@ pub struct Uninstall { } impl Uninstall { - pub fn run(self, mut config: Config, _out: &mut Output) -> Result<()> { + pub fn run(self, config: Config, _out: &mut Output) -> Result<()> { let runtimes = ToolArg::double_tool_condition(&self.tool); let mut tool_versions = vec![]; @@ -59,7 +59,7 @@ impl Uninstall { vec![tvr.resolve(&config, tool.clone(), Default::default(), false)?] } None => { - let ts = ToolsetBuilder::new().build(&mut config)?; + let ts = ToolsetBuilder::new().build(&config)?; match ts.versions.get(&a.plugin) { Some(tvl) => tvl.versions.clone(), None => bail!( @@ -96,7 +96,7 @@ impl Uninstall { pr.finish_with_message("uninstalled"); } - let ts = ToolsetBuilder::new().build(&mut config)?; + let ts = ToolsetBuilder::new().build(&config)?; shims::reshim(&config, &ts).wrap_err("failed to reshim")?; runtime_symlinks::rebuild(&config)?; diff --git a/src/cli/upgrade.rs b/src/cli/upgrade.rs index 11b9a7497a..aaa49eed40 100644 --- a/src/cli/upgrade.rs +++ b/src/cli/upgrade.rs @@ -30,10 +30,8 @@ pub struct Upgrade { } impl Upgrade { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let mut ts = ToolsetBuilder::new() - .with_args(&self.tool) - .build(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let mut ts = ToolsetBuilder::new().with_args(&self.tool).build(&config)?; let tool_set = self .tool .iter() @@ -45,7 +43,7 @@ impl Upgrade { if outdated.is_empty() { info!("All tools are up to date"); } else { - self.upgrade(&mut config, outdated, out)?; + self.upgrade(&config, outdated, out)?; } Ok(()) diff --git a/src/cli/use.rs b/src/cli/use.rs index b63deac437..96fee8f1b8 100644 --- a/src/cli/use.rs +++ b/src/cli/use.rs @@ -64,11 +64,9 @@ pub struct Use { } impl Use { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let mut ts = ToolsetBuilder::new() - .with_args(&self.tool) - .build(&mut config)?; - ts.install_arg_versions(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let mut ts = ToolsetBuilder::new().with_args(&self.tool).build(&config)?; + ts.install_arg_versions(&config)?; ts.versions .retain(|_, tvl| self.tool.iter().any(|t| t.plugin == tvl.plugin_name)); diff --git a/src/cli/where.rs b/src/cli/where.rs index 380a68df73..ee81e5e7b2 100644 --- a/src/cli/where.rs +++ b/src/cli/where.rs @@ -28,14 +28,14 @@ pub struct Where { } impl Where { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { let runtime = match self.tool.tvr { None => match self.asdf_version { Some(version) => self.tool.with_version(&version), None => { let ts = ToolsetBuilder::new() .with_args(&[self.tool.clone()]) - .build(&mut config)?; + .build(&config)?; let v = ts .versions .get(&self.tool.plugin) diff --git a/src/cli/which.rs b/src/cli/which.rs index 3a9791b4a2..f580a3501b 100644 --- a/src/cli/which.rs +++ b/src/cli/which.rs @@ -28,8 +28,8 @@ pub struct Which { } impl Which { - pub fn run(self, mut config: Config, out: &mut Output) -> Result<()> { - let ts = self.get_toolset(&mut config)?; + pub fn run(self, config: Config, out: &mut Output) -> Result<()> { + let ts = self.get_toolset(&config)?; match ts.which(&config, &self.bin_name) { Some((p, tv)) => { diff --git a/src/config/mod.rs b/src/config/mod.rs index 367036edf2..720e058fb9 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -355,10 +355,9 @@ fn load_config_filenames( } fn get_global_rtx_toml() -> PathBuf { - match env::RTX_CONFIG_FILE.clone() { - Some(global) => global, - None => dirs::CONFIG.join("config.toml"), - } + env::RTX_CONFIG_FILE + .clone() + .unwrap_or_else(|| dirs::CONFIG.join("config.toml")) } pub fn global_config_files() -> Vec { diff --git a/src/shims.rs b/src/shims.rs index 0e1aede334..fc2f644dd7 100644 --- a/src/shims.rs +++ b/src/shims.rs @@ -23,13 +23,13 @@ use crate::{dirs, file}; // executes as if it was a shim if the command is not "rtx", e.g.: "node" #[allow(dead_code)] -pub fn handle_shim(mut config: Config, args: &[String], out: &mut Output) -> Result { +pub fn handle_shim(config: Config, args: &[String], out: &mut Output) -> Result { let (_, bin_name) = args[0].rsplit_once('/').unwrap_or(("", &args[0])); if bin_name == "rtx" { return Ok(config); } let mut args: Vec = args.iter().map(OsString::from).collect(); - args[0] = which_shim(&mut config, bin_name)?.into(); + args[0] = which_shim(&config, bin_name)?.into(); let exec = Exec { tool: vec![], c: None, diff --git a/src/toolset/mod.rs b/src/toolset/mod.rs index 133fbb0203..f982ae9f39 100644 --- a/src/toolset/mod.rs +++ b/src/toolset/mod.rs @@ -130,7 +130,6 @@ impl Toolset { (0..config.settings.jobs) .map(|_| { let queue = queue.clone(); - let config = config; let ts = &*self; s.spawn(move || { let next_job = || queue.lock().unwrap().pop(); @@ -311,12 +310,11 @@ impl Toolset { pub fn list_paths(&self, config: &Config) -> Vec { self.list_current_installed_versions(config) .into_par_iter() - .flat_map(|(p, tv)| match p.list_bin_paths(config, self, &tv) { - Ok(paths) => paths, - Err(e) => { - warn!("Error listing bin paths for {}: {:#}", tv, e); + .flat_map(|(p, tv)| { + p.list_bin_paths(config, self, &tv).unwrap_or_else(|e| { + warn!("Error listing bin paths for {tv}: {e:#}"); Vec::new() - } + }) }) .collect() }