tinymist_package/registry/
memory.rsuse std::collections::HashMap;
use std::path::{Path, PathBuf};
use std::sync::Arc;
use super::{PackageError, PackageRegistry, PackageSpec};
#[derive(Default, Debug)]
pub struct MemoryRegistry(HashMap<PackageSpec, Arc<Path>>);
impl MemoryRegistry {
pub fn add_memory_package(&mut self, spec: PackageSpec) -> Arc<Path> {
let package_root: Arc<Path> = PathBuf::from("/internal-packages")
.join(spec.name.as_str())
.join(spec.version.to_string())
.into();
self.0.insert(spec, package_root.clone());
package_root
}
}
impl PackageRegistry for MemoryRegistry {
fn resolve(&self, spec: &PackageSpec) -> Result<Arc<Path>, PackageError> {
self.0
.get(spec)
.cloned()
.ok_or_else(|| PackageError::NotFound(spec.clone()))
}
}