diff --git a/src/backend/mod.rs b/src/backend/mod.rs index 0744a20fdf..edd14fdc11 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -663,7 +663,6 @@ impl Ord for dyn Backend { } } -#[cfg(test)] pub fn reset() { *TOOLS.lock().unwrap() = None; } diff --git a/src/cli/uninstall.rs b/src/cli/uninstall.rs index 83c4d9cc7e..1dfb229021 100644 --- a/src/cli/uninstall.rs +++ b/src/cli/uninstall.rs @@ -8,7 +8,7 @@ use rayon::prelude::*; use crate::backend::Backend; use crate::cli::args::ToolArg; use crate::config::Config; -use crate::toolset::{ToolRequest, ToolSource, ToolVersion, ToolsetBuilder}; +use crate::toolset::{install_state, ToolRequest, ToolSource, ToolVersion, ToolsetBuilder}; use crate::ui::multi_progress_report::MultiProgressReport; use crate::{dirs, file, lockfile, runtime_symlinks, shims}; @@ -66,6 +66,7 @@ impl Uninstall { } } + install_state::reset(); file::touch_dir(&dirs::DATA)?; lockfile::update_lockfiles(&[]).wrap_err("failed to update lockfiles")?; let ts = ToolsetBuilder::new().build(&config)?; diff --git a/src/cli/upgrade.rs b/src/cli/upgrade.rs index 91fb026673..e3ac6393d8 100644 --- a/src/cli/upgrade.rs +++ b/src/cli/upgrade.rs @@ -1,7 +1,9 @@ use crate::cli::args::ToolArg; use crate::config::{config_file, Config}; use crate::file::display_path; -use crate::toolset::{InstallOptions, OutdatedInfo, ResolveOptions, ToolVersion, ToolsetBuilder}; +use crate::toolset::{ + install_state, InstallOptions, OutdatedInfo, ResolveOptions, ToolVersion, ToolsetBuilder, +}; use crate::ui::multi_progress_report::MultiProgressReport; use crate::ui::progress_report::SingleReport; use crate::{lockfile, runtime_symlinks, shims, ui}; @@ -155,6 +157,7 @@ impl Upgrade { self.uninstall_old_version(&o.tool_version, pr.as_ref())?; } + install_state::reset(); lockfile::update_lockfiles(&versions).wrap_err("failed to update lockfiles")?; let ts = ToolsetBuilder::new().with_args(&self.tool).build(config)?; shims::reshim(&ts, false).wrap_err("failed to reshim")?; diff --git a/src/config/mod.rs b/src/config/mod.rs index d51878b10c..753036da38 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -490,6 +490,7 @@ impl Config { } pub fn rebuild_shims_and_runtime_symlinks(&self) -> Result<()> { + install_state::reset(); let ts = crate::toolset::ToolsetBuilder::new().build(self)?; crate::shims::reshim(&ts, false)?; crate::runtime_symlinks::rebuild(self)?; diff --git a/src/toolset/install_state.rs b/src/toolset/install_state.rs index 825185b2c8..5fcce0ddee 100644 --- a/src/toolset/install_state.rs +++ b/src/toolset/install_state.rs @@ -2,7 +2,7 @@ use crate::backend::backend_type::BackendType; use crate::file::display_path; use crate::plugins::PluginType; use crate::registry::REGISTRY; -use crate::{dirs, file, runtime_symlinks}; +use crate::{backend, dirs, file, runtime_symlinks}; use eyre::{Ok, Result}; use heck::ToKebabCase; use itertools::Itertools; @@ -229,4 +229,5 @@ static EMPTY_VEC: Vec<&'static str> = vec![]; pub fn reset() { *INSTALL_STATE_PLUGINS.lock().unwrap() = None; *INSTALL_STATE_TOOLS.lock().unwrap() = None; + backend::reset(); }