in license-scan/src/main.rs [197:224]
fn get(&self, name: &str, mut files: BTreeMap<&Path, u32>) -> Result<Option<Clarified<'_>>> {
if let Some(clarification) = self.clarify.get(name) {
// first remove files to skip
for file in &clarification.skip_files {
files.remove(file.as_path());
}
// convert `clarification.license_files` into a struct we can compare with `files`
let clarify_files = clarification
.license_files
.iter()
.map(|file| (Path::new(&file.path), file.hash))
.collect::<BTreeMap<_, _>>();
ensure!(
files == clarify_files,
"file mismatch in clarification for {}\nclarification: {:#x?}\nscanned: {:#x?}",
name,
clarify_files,
files,
);
Ok(Some(Clarified {
expression: &clarification.expression,
skip_files: &clarification.skip_files,
}))
} else {
Ok(None)
}
}