From f764acc2df2273337938b8ad5647b4b6d8e37446 Mon Sep 17 00:00:00 2001 From: notplants Date: Wed, 20 Apr 2022 12:15:38 -0400 Subject: [PATCH] More concise transforms --- peach-config/src/generate_manifest.rs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/peach-config/src/generate_manifest.rs b/peach-config/src/generate_manifest.rs index d755ee2..135dc25 100644 --- a/peach-config/src/generate_manifest.rs +++ b/peach-config/src/generate_manifest.rs @@ -1,15 +1,14 @@ +use log::debug; use serde::{Deserialize, Serialize}; use snafu::ResultExt; use std::collections::HashMap; use std::fs; -use log::debug; use crate::constants::{HARDWARE_CONFIG_FILE, SERVICES}; use crate::error::{FileReadError, FileWriteError, PeachConfigError}; use crate::utils::get_output; use crate::RtcOption; - pub fn get_package_version_number(package: &str) -> Result { let version = get_output(&["dpkg-query", "--showformat='${Version}'", "--show", package])?; debug!("version: {:?}", version); @@ -21,18 +20,16 @@ pub fn get_package_version_number(package: &str) -> Result Result, PeachConfigError> { // gets a list of all packages currently installed with dpkg-query - let peach_packages_option_vec: Vec> = SERVICES.iter().map(|service| { - let version = get_package_version_number(service); - match version { - Ok(v) => { - Some((service.to_string(), v.to_string())) + let peach_packages: HashMap = SERVICES + .iter() + .filter_map(|service| { + let version = get_package_version_number(service); + match version { + Ok(v) => Some((service.to_string(), v)), + Err(_) => None, } - Err(_) => { - None - } - } - }).collect(); - let peach_packages: HashMap = peach_packages_option_vec.into_iter().flat_map(|e| e).collect(); + }) + .collect(); // finally the hashmap of packages and version numbers is returned Ok(peach_packages)