Skip to content

Commit adf9bfe

Browse files
committed
Delete plugins correctly for all formats
1 parent 2995107 commit adf9bfe

3 files changed

Lines changed: 24 additions & 6 deletions

File tree

src-tauri/src/controllers/plugin_controller.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ pub enum Error {
6666

6767
#[error("Unable to copy files: {0}")]
6868
CopyFilesError(String),
69+
70+
#[error("Unable to remove files: {0}")]
71+
RemoveFilesError(String),
6972
}
7073

7174
impl serde::Serialize for Error {

src-tauri/src/controllers/plugin_controller/create_plugins_service.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,8 @@ fn get_download_file_name(
257257
fn copy_dir_all(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> Result<(), Error> {
258258
let copy_dir_script = format!(
259259
r#"do shell script "cp -r {} {}" with administrator privileges"#,
260-
&src.as_ref().to_string_lossy(),
261-
&dst.as_ref().to_string_lossy(),
260+
src.as_ref().to_string_lossy(),
261+
dst.as_ref().to_string_lossy(),
262262
);
263263
let copy_dir_cmd = Command::new("osascript")
264264
.arg("-e")

src-tauri/src/controllers/plugin_controller/delete_plugins_service.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use super::{
55
};
66
use crate::{mod_plugin_controller, plugin_controller::utils::get_plugin_bundle_name};
77
use futures::future::try_join_all;
8-
use std::{fs, path::PathBuf};
8+
use std::{path::PathBuf, process::Command};
99

1010
pub async fn delete_desktop_plugins(
1111
plugins: Vec<String>,
@@ -26,8 +26,10 @@ pub async fn delete_desktop_plugins(
2626
.iter()
2727
.map(|plugin| {
2828
let plugin_folder = plugin_folder.clone();
29+
let plugin_format = target_plugin_format.clone();
30+
2931
async move {
30-
delete_plugin(&plugin_folder, plugin.as_str(), &PluginFormat::VST3).await?;
32+
delete_plugin(&plugin_folder, plugin.as_str(), &plugin_format).await?;
3133
Ok::<(), Error>(())
3234
}
3335
})
@@ -63,7 +65,20 @@ async fn delete_plugin(
6365
plugin_format: &PluginFormat,
6466
) -> Result<(), Error> {
6567
let plugin_path = get_plugin_path(plugin_folder, plugin_name, plugin_format)?;
66-
fs::remove_dir_all(&plugin_path)?;
68+
let remove_plugin_script = format!(
69+
r#"do shell script "rm -rf {}" with administrator privileges"#,
70+
plugin_path.to_string_lossy()
71+
);
72+
let remove_plugin_cmd = Command::new("osascript")
73+
.arg("-e")
74+
.arg(remove_plugin_script)
75+
.output()?;
6776

68-
Ok(())
77+
if remove_plugin_cmd.status.success() {
78+
return Ok(());
79+
} else {
80+
return Err(Error::RemoveFilesError(
81+
String::from_utf8_lossy(&remove_plugin_cmd.stderr).to_string(),
82+
));
83+
}
6984
}

0 commit comments

Comments
 (0)