regy 0.1.1

Private-by-default desktop agent for the Regy web interface
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
    }
}