diff --git a/src/config.rs b/src/config.rs index 0fbe06ff..7af0a8fe 100644 --- a/src/config.rs +++ b/src/config.rs @@ -260,7 +260,6 @@ impl Config { } /// Tell whether we should perform cleanup steps. - #[cfg(not(windows))] pub fn cleanup(&self) -> bool { self.opt.cleanup || self.config_file.cleanup.unwrap_or(false) } diff --git a/src/main.rs b/src/main.rs index 5a2b4004..91e4b7cf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -415,13 +415,13 @@ fn run() -> Result<(), Error> { execute( &mut report, "vim", - || vim::upgrade_vim(&base_dirs, run_type), + || vim::upgrade_vim(&base_dirs, run_type, config.cleanup()), config.no_retry(), )?; execute( &mut report, "Neovim", - || vim::upgrade_neovim(&base_dirs, run_type), + || vim::upgrade_neovim(&base_dirs, run_type, config.cleanup()), config.no_retry(), )?; execute( diff --git a/src/steps/vim.rs b/src/steps/vim.rs index c05c5c3d..4e629d8f 100644 --- a/src/steps/vim.rs +++ b/src/steps/vim.rs @@ -35,11 +35,17 @@ impl PluginFramework { } } - pub fn upgrade_command(self) -> &'static str { + pub fn upgrade_command(self, cleanup: bool) -> &'static str { match self { PluginFramework::NeoBundle => "NeoBundleUpdate", PluginFramework::Vundle => "PluginUpdate", - PluginFramework::Plug => "PlugUpgrade | PlugUpdate", + PluginFramework::Plug => { + if cleanup { + "PlugUpgrade | PlugClean | PlugUpdate" + } else { + "PlugUpgrade | PlugUpdate" + } + } PluginFramework::Dein => "call dein#install() | call dein#update()", } } @@ -62,14 +68,20 @@ fn nvimrc(base_dirs: &BaseDirs) -> Option { } #[must_use] -fn upgrade(vim: &PathBuf, vimrc: &PathBuf, plugin_framework: PluginFramework, run_type: RunType) -> Result<(), Error> { +fn upgrade( + vim: &PathBuf, + vimrc: &PathBuf, + plugin_framework: PluginFramework, + run_type: RunType, + cleanup: bool, +) -> Result<(), Error> { let output = run_type .execute(&vim) .args(&["-N", "-u"]) .arg(vimrc) .args(&[ "-c", - plugin_framework.upgrade_command(), + plugin_framework.upgrade_command(cleanup), "-c", "quitall", "-e", @@ -93,7 +105,7 @@ fn upgrade(vim: &PathBuf, vimrc: &PathBuf, plugin_framework: PluginFramework, ru } #[must_use] -pub fn upgrade_vim(base_dirs: &BaseDirs, run_type: RunType) -> Result<(), Error> { +pub fn upgrade_vim(base_dirs: &BaseDirs, run_type: RunType, cleanup: bool) -> Result<(), Error> { let vim = require("vim")?; let output = Command::new(&vim).arg("--version").check_output()?; @@ -105,17 +117,17 @@ pub fn upgrade_vim(base_dirs: &BaseDirs, run_type: RunType) -> Result<(), Error> let plugin_framework = require_option(PluginFramework::detect(&vimrc))?; print_separator(&format!("Vim ({:?})", plugin_framework)); - upgrade(&vim, &vimrc, plugin_framework, run_type) + upgrade(&vim, &vimrc, plugin_framework, run_type, cleanup) } #[must_use] -pub fn upgrade_neovim(base_dirs: &BaseDirs, run_type: RunType) -> Result<(), Error> { +pub fn upgrade_neovim(base_dirs: &BaseDirs, run_type: RunType, cleanup: bool) -> Result<(), Error> { let nvim = require("nvim")?; let nvimrc = require_option(nvimrc(&base_dirs))?; let plugin_framework = require_option(PluginFramework::detect(&nvimrc))?; print_separator(&format!("Neovim ({:?})", plugin_framework)); - upgrade(&nvim, &nvimrc, plugin_framework, run_type) + upgrade(&nvim, &nvimrc, plugin_framework, run_type, cleanup) } pub fn run_voom(_base_dirs: &BaseDirs, run_type: RunType) -> Result<(), Error> {