use std::collections::BTreeMap;
use std::path::PathBuf;
use semver::Version;
use crate::dependency::DependencyName;
use crate::hash::ContentHash;
use crate::lockfile::ResolvedSource;
use crate::signing::VerifyingKey;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct MaterializedFile {
pub path: PathBuf,
pub module_root: PathBuf,
pub source: ResolvedSource,
pub manifest: std::sync::Arc<crate::Manifest>,
}
impl MaterializedFile {
pub fn child_module(
&self,
consumer: &crate::module::Module,
dep_name: DependencyName,
) -> crate::module::Module {
consumer.child(dep_name, self.manifest.clone(), self.module_root.clone())
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq)]
pub struct ResolvedTree {
pub dependencies: BTreeMap<DependencyName, ResolvedDependency>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ResolvedDependency {
pub source: ResolvedSource,
pub version: Version,
pub checksum: ContentHash,
pub signer: Option<VerifyingKey>,
pub dependencies: BTreeMap<DependencyName, ResolvedDependency>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ResolvedModule {
pub version: Version,
pub checksum: ContentHash,
pub signer: Option<VerifyingKey>,
pub dependencies: BTreeMap<DependencyName, ResolvedDependency>,
}