1use crate::lock;
2
3#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq, serde::Serialize, serde::Deserialize)]
5pub struct Package {
6 pub registry: String,
7 pub name: String,
8 pub version: String,
9}
10
11pub type DependenciesLocks = std::collections::BTreeMap<Package, Option<lock::Lock>>;
12
13#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
14pub struct PackageLocks {
15 pub primary_package: Option<Package>,
16 pub primary_package_lock: Option<lock::Lock>,
17 pub dependencies_locks: DependenciesLocks,
18}
19
20impl PackageLocks {
21 pub fn has_locks(&self) -> bool {
22 self.primary_package_lock.is_some() || !self.dependencies_locks.is_empty()
23 }
24}