Files
AeroPkg/src/commands/delete.rs

41 lines
1.3 KiB
Rust

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)
}
}