fix: nix-env integration

This commit is contained in:
iff 2024-12-08 00:00:38 +01:00
parent 5c919ad940
commit 03c103d010

View file

@ -31,6 +31,9 @@ pub fn get_packages(data: &mut Data, package_manager: &str, executable: &str) ->
return None; return None;
} }
let result = command_output(shell, &format!("dpkg -S '*/bin/{}'", executable)); let result = command_output(shell, &format!("dpkg -S '*/bin/{}'", executable));
if result.is_empty() {
return None
}
let packages: Vec<String> = result let packages: Vec<String> = result
.lines() .lines()
.map(|line| line[..line.find(':').unwrap()].to_string()) .map(|line| line[..line.find(':').unwrap()].to_string())
@ -44,6 +47,9 @@ pub fn get_packages(data: &mut Data, package_manager: &str, executable: &str) ->
}, },
"dnf" => { "dnf" => {
let result = command_output(shell, &format!("dnf provides {}", executable)); let result = command_output(shell, &format!("dnf provides {}", executable));
if result.is_empty() {
return None
}
let packages: Vec<String> = result let packages: Vec<String> = result
.lines() .lines()
.map(|line| line.split_whitespace().next().unwrap().to_string()) .map(|line| line.split_whitespace().next().unwrap().to_string())
@ -59,6 +65,9 @@ pub fn get_packages(data: &mut Data, package_manager: &str, executable: &str) ->
return None; return None;
} }
let result = command_output(shell, &format!("e-file /usr/bin/{}", executable)); let result = command_output(shell, &format!("e-file /usr/bin/{}", executable));
if result.is_empty() {
return None
}
let mut packages = vec![]; let mut packages = vec![];
for line in result.lines() { for line in result.lines() {
if !line.starts_with(" ") { if !line.starts_with(" ") {
@ -75,10 +84,13 @@ pub fn get_packages(data: &mut Data, package_manager: &str, executable: &str) ->
if !data.has_executable("nix-locate") { if !data.has_executable("nix-locate") {
return None; return None;
} }
let result = command_output(shell, &format!("nix-locate /usr/bin/{}", executable)); let result = command_output(shell, &format!("nix-locate 'bin/{}'", executable));
if result.is_empty() {
return None
}
let packages: Vec<String> = result let packages: Vec<String> = result
.lines() .lines()
.map(|line| line.split_whitespace().next().unwrap().trim_end_matches(".out").to_string()) .map(|line| line.split_whitespace().next().unwrap().to_string())
.collect(); .collect();
if packages.is_empty() { if packages.is_empty() {
None None
@ -91,6 +103,9 @@ pub fn get_packages(data: &mut Data, package_manager: &str, executable: &str) ->
// let result = if data.has_executable("pkgfile") { // let result = if data.has_executable("pkgfile") {
// command_output(shell, &format!("pkgfile -b {}", executable)) // command_output(shell, &format!("pkgfile -b {}", executable))
let result = command_output(shell, &format!("pacman -Fq /usr/bin/{}", executable)); let result = command_output(shell, &format!("pacman -Fq /usr/bin/{}", executable));
if result.is_empty() {
return None
}
let packages: Vec<String> = result let packages: Vec<String> = result
.lines() .lines()
.map(|line| line.split_whitespace().next().unwrap().to_string()) .map(|line| line.split_whitespace().next().unwrap().to_string())
@ -111,7 +126,7 @@ pub fn install_package(data: &mut Data, package_manager: &str, package: &str) ->
"apt" => format!("apt install {}", package), "apt" => format!("apt install {}", package),
"dnf" => format!("dnf install {}", package), "dnf" => format!("dnf install {}", package),
"emerge" => format!("emerge {}", package), "emerge" => format!("emerge {}", package),
"nix-env" => format!("nix-env -iA {}", package), "nix-env" => format!("nix-env -iA nixpkgs.{}", package),
"pacman" => format!("pacman -S {}", package), "pacman" => format!("pacman -S {}", package),
"pkg" => format!("pkg install {}", package), "pkg" => format!("pkg install {}", package),
"yum" => format!("yum install {}", package), "yum" => format!("yum install {}", package),