2025-06-02 18:00:32 +03:00
|
|
|
use std::fs;
|
2025-08-23 07:04:59 +03:00
|
|
|
use std::path::{Path,PathBuf};
|
2025-06-02 18:00:32 +03:00
|
|
|
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();
|
|
|
|
|
fs::remove_dir_all(PathBuf::from("/pkg").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 = Path::new("/pkg").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() {
|
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
}
|