More concise transforms

This commit is contained in:
notplants 2022-04-20 12:15:38 -04:00
parent a347e4726d
commit f764acc2df
1 changed files with 10 additions and 13 deletions

View File

@ -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<String, PeachConfigError> {
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<String, PeachConfigEr
pub fn get_currently_installed_microservices() -> Result<HashMap<String, String>, PeachConfigError>
{
// gets a list of all packages currently installed with dpkg-query
let peach_packages_option_vec: Vec<Option<(String, String)>> = 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<String, String> = 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<String, String> = 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)