xref: /DADK/dadk/src/actions/rootfs/sysroot.rs (revision a013ae121c339d37b6fa5273770148fa161c730b)
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