Files
AeroPkg/src/commands/delete.rs

41 lines
1.3 KiB
Rust
Raw Normal View History

2025-06-02 18:00:32 +03:00
use std::fs;
use crate::utils::parser;
2025-08-23 07:04:59 +03:00
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()
2025-06-02 18:00:32 +03:00
}
2025-08-23 07:04:59 +03:00
pub fn delete_recursive(repo: &String, pkgname: &String) {
let pkg_dir = &super::get_aeropkg_base().join(repo).join(pkgname);
2025-06-02 18:00:32 +03:00
if pkg_dir.exists() {
let var_path = super::get_aeropkg_var();
let pkg_md_path = &var_path.join(format!("{}/{}.md", repo, pkgname));
2025-06-02 18:00:32 +03:00
match parser::get_build_deps(pkg_md_path) {
2025-06-02 18:00:32 +03:00
Ok(deps) => {
for dependency in deps.lines() {
let dependency = dependency.trim();
if !dependency.is_empty() {
2025-11-18 19:46:36 +03:00
let pkg_dir = super::get_aeropkg_base().join(repo).join(dependency);
2025-06-02 18:00:32 +03:00
if pkg_dir.exists() {
2025-11-18 19:46:36 +03:00
if !parser::pkginfo::get_use_status(repo, dependency) {
2025-06-02 18:00:32 +03:00
delete(repo, &dependency.to_string())
}
}
}
}
}
Err(e) => {
eprintln!("Failed to parse dependencies: {}", e)
}
}
fs::remove_dir_all(pkg_dir).unwrap()
2025-06-02 18:00:32 +03:00
} else {
println!("{} not installed in {}", pkgname, repo)
2025-06-02 18:00:32 +03:00
}
}