use std::collections::HashSet;
use crate::error::LockfileError;
use crate::model::{LOCKFILE_VERSION, Lockfile};
pub fn validate(lockfile: &Lockfile) -> Result<(), LockfileError> {
if lockfile.version != LOCKFILE_VERSION {
return Err(LockfileError::UnsupportedVersion {
version: lockfile.version,
expected: LOCKFILE_VERSION,
});
}
let mut seen: HashSet<&str> = HashSet::new();
for pkg in &lockfile.packages {
if !seen.insert(pkg.name.as_str()) {
return Err(LockfileError::DuplicatePackage {
name: pkg.name.as_str().to_owned(),
});
}
}
Ok(())
}