use crate::{
dependencies::{
assets::{ManagedAsset, node_asset},
installer::{InstalledTool, VerifiedInstaller},
platform::Platform,
},
domain::errors::AgentResult,
};
#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) struct ManagedNode {
pub(crate) asset: ManagedAsset,
}
impl ManagedNode {
pub(crate) fn for_platform(platform: Platform) -> AgentResult<Self> {
Ok(Self {
asset: node_asset(platform)?,
})
}
pub(crate) async fn install(
&self,
installer: &VerifiedInstaller<'_>,
) -> AgentResult<InstalledTool> {
installer.install(&self.asset).await
}
}