kittynode_core/application/
get_packages_runtime_state.rs

1use crate::{
2    domain::package::PackageRuntimeState,
3    infra::package::{self, get_packages},
4};
5use eyre::{Result, WrapErr};
6use std::collections::HashMap;
7
8pub async fn get_packages_runtime_state(
9    names: &[String],
10) -> Result<HashMap<String, PackageRuntimeState>> {
11    let catalog = get_packages().wrap_err("Failed to retrieve packages")?;
12    let mut states = HashMap::new();
13
14    for name in names {
15        let package = catalog
16            .get(name)
17            .ok_or_else(|| eyre::eyre!("Package '{}' not found", name))?;
18        let state = package::get_package_runtime_state(package).await?;
19        states.insert(name.clone(), state);
20    }
21
22    Ok(states)
23}