use std::fs; use std::path::{Path,PathBuf}; use crate::utils::parser; pub fn delete(repo: &String, pkgname: &String) { super::disable::disable(&repo, &pkgname).unwrap(); fs::remove_dir_all(PathBuf::from("/pkg").join(&repo).join(&pkgname)).unwrap(); } pub fn delete_recursive(repo: &String, pkgname: &String) { let pkg_dir = Path::new("/pkg").join(repo).join(pkgname); if pkg_dir.exists() { let var_path = super::get_var_path(); 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 = Path::new("/pkg").join(repo).join(dependency); if pkg_dir.exists() { if !parser::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 { eprintln!("{} not installed in {}", pkgname, repo) } }