use crate::utils::fs::hardcopy::hardcopy_handler; use crate::utils::shell::*; pub fn link(repo: &String, pkgname: &String) { let source = crate::commands::get_aeropkg_base().join(repo).join(pkgname); if source.join("disabled").exists() { println!("Disabled package, no linking: {}\nUse `pkg enable {}` to link", pkgname, pkgname); return } let destination = source.parent() .ok_or("Failed to get parent directory for path").unwrap() .to_path_buf(); let dirs_to_copy = vec![ ("bin"), ("sbin"), ("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)).unwrap() } } mount_overlay(); shell_update() }