openfare_lib/
package.rs

1use crate::lock;
2
3/// A software package's name and version.
4#[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}