1 use anyhow::{anyhow, Result}; 2 3 use crate::context::DADKExecContext; 4 5 pub(super) fn delete(ctx: &DADKExecContext) -> Result<()> { 6 let sysroot_dir = ctx.sysroot_dir()?; 7 // 检查 sysroot_dir 是否存在 8 if !sysroot_dir.exists() { 9 return Err(anyhow!("Sysroot directory does not exist")); 10 } 11 12 // 检查 sysroot_dir 是否是一个目录 13 if !sysroot_dir.is_dir() { 14 return Err(anyhow!("Sysroot path is not a directory")); 15 } 16 17 // 检查 sysroot_dir 是否是当前工作目录的子目录 18 if !sysroot_dir.starts_with(&ctx.workdir()) { 19 return Err(anyhow!( 20 "Sysroot directory must be a subdirectory of the current working directory" 21 )); 22 } 23 24 std::fs::remove_dir_all(sysroot_dir)?; 25 Ok(()) 26 } 27