From 7f8e997b8d6b2aad776da4db817a79bee7540c33 Mon Sep 17 00:00:00 2001 From: Adrian Groh Date: Fri, 14 Apr 2023 13:34:34 +0200 Subject: [PATCH] feat: add alternative `rpm` package count method (for OpenSUSE) This enables package count on openSUSE, although very slow more info: https://github.com/Macchina-CLI/libmacchina/issues/154 closes #25 --- src/lib.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e693a56..1b00a80 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -123,13 +123,27 @@ fn packages( | PackageManager::Dpkg | PackageManager::Xbps | PackageManager::Apk - | PackageManager::Rpm | PackageManager::Portage | PackageManager::Opkg => get_macchina_package_count( macchina_package_count, &format!("{pkg_manager:?}").to_lowercase(), ) .unwrap_or(0), + // macchina only supports sqlite database backend for rpm + PackageManager::Rpm => match get_macchina_package_count( + macchina_package_count, + &format!("{pkg_manager:?}").to_lowercase(), + ) { + Some(count) => count, + // for other databases run `rpm` (slow), see Macchina-CLI/libmacchina#154 + None => { + if !skip_slow { + run_and_count_lines("rpm", &["-qa"]) + } else { + 0 + } + } + }, PackageManager::Guix => run_and_count_lines("guix", &["package", "--list-installed"]), PackageManager::Crux => { if check_if_command_exists("crux") { @@ -158,7 +172,6 @@ fn packages( 0 } } - // TODO: nix -q is very slow PackageManager::Nix => { if check_if_command_exists("nix-store") && !skip_slow { run_and_count_lines(