1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use crate::{depman::NodeDependencyManager, NodeDependencyManagerType};
use proto_core::{async_trait, Installable, ProtoError, Resolvable};
use std::path::PathBuf;

#[async_trait]
impl Installable<'_> for NodeDependencyManager {
    fn get_archive_prefix(&self) -> Result<Option<String>, ProtoError> {
        Ok(Some(
            if matches!(&self.type_of, NodeDependencyManagerType::Yarn) {
                format!("yarn-v{}", self.get_resolved_version())
            } else {
                "package".into()
            },
        ))
    }

    fn get_install_dir(&self) -> Result<PathBuf, ProtoError> {
        Ok(self.base_dir.join(self.get_resolved_version()))
    }
}