Safer deletion

This commit is contained in:
sxyazi 2025-01-11 10:50:32 +08:00
parent 6fc52713b5
commit 41487dac43
No known key found for this signature in database
2 changed files with 17 additions and 10 deletions

View file

@ -1,6 +1,6 @@
use anyhow::{Result, bail};
use tokio::fs;
use yazi_fs::must_exists;
use yazi_fs::maybe_exists;
use yazi_macro::outln;
use super::Dependency;
@ -10,16 +10,21 @@ impl Dependency {
self.header("Deleting package `{name}`")?;
let dir = self.target();
if must_exists(&dir).await {
fs::remove_dir_all(&dir).await?;
} else {
if !maybe_exists(&dir).await {
return Ok(outln!("Not found, skipping")?);
}
if self.hash != self.hash().await? {
bail!(
"The package.toml file states that `{}` exists, but the directory was not found. The entry will be removed from package.toml.",
self.name
"You have modified the contents of the `{}` {}. For safety, the operation has been aborted.
Please manually delete it from: {}",
self.name,
if self.is_flavor { "flavor" } else { "plugin" },
dir.display()
);
}
outln!("Done!")?;
fs::remove_dir_all(&dir).await?;
Ok(())
}
}

View file

@ -17,9 +17,11 @@ impl Dependency {
let to = self.target();
if maybe_exists(&to).await && self.hash != self.hash().await? {
bail!(
"The user has modified the contents of the `{}` package. For safety, the operation has been aborted.
Please manually delete it from your plugins/flavors directory and re-run the command.",
self.name
"You have modified the contents of the `{}` {}. For safety, the operation has been aborted.
Please manually delete it from `{}` and re-run the command.",
self.name,
if self.is_flavor { "flavor" } else { "plugin" },
to.display()
);
}