use std::fs; use crate::utils::fs::deletecopy::deletecopy; use crate::utils::shell::*; pub fn disable(repo: &String, pkgname: &String) -> Result<(), String> { let source = crate::commands::get_aeropkg_base().join(repo).join(pkgname); if source.join("disabled").exists() { return Ok(()) }; let destination = source.parent() .ok_or("Failed to get parent directory for path")? .to_path_buf(); let dirs_to_copy = vec![ ("bin"), ("lib"), ("libexec"), ("include"), ("share"), ]; for base_system_folder_dir in dirs_to_copy { let src = source.join(base_system_folder_dir); let dest = destination.join(base_system_folder_dir); if src.exists() { deletecopy(&src, &dest) .map_err(|e| format!("Failed to delete copy {} to {}: {}", src.display(), dest.display(), e))?; } } mount_overlay(&destination)?; shell_update()?; fs::File::create(&source.join("disabled")).ok(); Ok(()) }