use std::fs; use crate::utils::parser; pub fn delete(repo: &String, pkgname: &String) { super::disable::disable(repo, pkgname); fs::remove_dir_all(super::get_aeropkg_base().join(repo).join(pkgname)).unwrap() } pub fn delete_recursive(repo: &String, pkgname: &String) { let pkg_dir = &super::get_aeropkg_base().join(repo).join(pkgname); if pkg_dir.exists() { let var_path = super::get_aeropkg_var(); let pkg_md_path = &var_path.join(format!("{}/{}.md", repo, pkgname)); match parser::get_build_deps(pkg_md_path) { Ok(deps) => { for dependency in deps.lines() { let dependency = dependency.trim(); if !dependency.is_empty() { let pkg_dir = super::get_aeropkg_base().join(repo).join(dependency); if pkg_dir.exists() { if !parser::pkginfo::get_use_status(repo, dependency) { delete(repo, &dependency.to_string()) } } } } } Err(e) => { eprintln!("Failed to parse dependencies: {}", e) } } fs::remove_dir_all(pkg_dir).unwrap() } else { println!("{} not installed in {}", pkgname, repo) } }