Files
AeroPkg/src/commands/delete.rs

42 lines
1.4 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).unwrap();
2025-11-18 19:46:36 +03:00
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) {
2025-11-18 19:46:36 +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() {
2025-08-23 07:04:59 +03:00
let var_path = super::get_var_path();
2025-06-02 18:00:32 +03:00
let pkg_md_path = var_path.join(format!("{}/{}.md", repo, pkgname));
2025-08-23 07:04:59 +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)
}
}
2025-08-23 07:04:59 +03:00
fs::remove_dir_all(&pkg_dir).unwrap();
2025-06-02 18:00:32 +03:00
} else {
eprintln!("{} not installed in {}", pkgname, repo)
}
}