kittynode_core/application/
install_package.rs

1use crate::infra::{
2    file::generate_jwt_secret,
3    package::{self, get_packages},
4    package_config::PackageConfigStore,
5};
6use eyre::{Context, Result};
7use tracing::info;
8
9pub async fn install_package(name: &str) -> Result<()> {
10    generate_jwt_secret().wrap_err("Failed to generate JWT secret")?;
11
12    let package = get_packages()?
13        .remove(name)
14        .ok_or_else(|| eyre::eyre!("Package '{}' not found", name))?;
15
16    let config = PackageConfigStore::load(name)?;
17    let network = config.values.get("network");
18
19    package::install_package(&package, network.map(String::as_str)).await?;
20    info!("Package '{}' installed successfully.", name);
21    Ok(())
22}