fn get()

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)
        }
    }