Files
AeroPkg/src/commands/link.rs

36 lines
1.0 KiB
Rust
Raw Normal View History

2025-11-18 19:46:36 +03:00
use crate::utils::fs::hardcopy::hardcopy_handler;
2025-08-08 00:00:14 +03:00
use crate::utils::shell::*;
2025-09-02 20:01:30 +03:00
pub fn link(repo: &String, pkgname: &String) -> Result<(), String> {
2025-11-18 19:46:36 +03:00
let source = crate::commands::get_aeropkg_base().join(repo).join(pkgname);
if source.join("disabled").exists() { println!("Can't link disabled package: {}", &pkgname); return Ok(()) }
2025-08-08 00:00:14 +03:00
let destination = source.parent()
.ok_or("Failed to get parent directory for path")?
.to_path_buf();
let dirs_to_copy = vec![
("bin"),
2025-11-18 19:46:36 +03:00
("sbin"),
2025-08-08 00:00:14 +03:00
("lib"),
("libexec"),
("include"),
("share")
];
for base_system_folder_dir in dirs_to_copy {
let src = source.join(base_system_folder_dir);
let dest = destination.join(base_system_folder_dir);
if src.exists() {
hardcopy_handler(&src, &dest)
.map_err(|e| format!("Failed to copy {} to {}: {}", src.display(), dest.display(), e))?;
}
}
mount_overlay(&destination)?;
shell_update()?;
Ok(())
}