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) {
|
2026-03-27 13:13:52 +03:00
|
|
|
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) {
|
2026-03-27 13:13:52 +03:00
|
|
|
let pkg_dir = &super::get_aeropkg_base().join(repo).join(pkgname);
|
2025-06-02 18:00:32 +03:00
|
|
|
|
|
|
|
|
if pkg_dir.exists() {
|
2026-03-27 13:13:52 +03:00
|
|
|
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
|
|
|
|
2026-03-27 13:13:52 +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)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-27 13:13:52 +03:00
|
|
|
fs::remove_dir_all(pkg_dir).unwrap()
|
2025-06-02 18:00:32 +03:00
|
|
|
} else {
|
2026-03-27 13:13:52 +03:00
|
|
|
println!("{} not installed in {}", pkgname, repo)
|
2025-06-02 18:00:32 +03:00
|
|
|
}
|
|
|
|
|
}
|