More concise transforms
This commit is contained in:
parent
a347e4726d
commit
f764acc2df
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue