fn find_load_dependencies()

in focus/internals/src/lib/index/content_hash.rs [447:471]


fn find_load_dependencies(ctx: &HashContext, tree: &git2::Tree) -> Result<BTreeSet<Label>> {
    trace!(?tree, "Finding load dependencies");
    if let Some(result) = ctx.caches.borrow().load_dependencies_cache.get(&tree.id()) {
        return Ok(result.clone());
    }

    let mut result = BTreeSet::new();
    for tree_entry in tree {
        if is_tree_entry_relevant_to_build_graph(&tree_entry) {
            let deps = extract_load_statements_from_tree_entry(ctx, &tree_entry)?;
            result.extend(deps);
        }
    }
    if let Some(old_value) = ctx
        .caches
        .borrow_mut()
        .load_dependencies_cache
        .insert(tree.id(), result.clone())
    {
        if old_value != result {
            error!(key = ?tree.id(), ?old_value, new_value = ?result, "Non-deterministic content hashing for load dependencies");
        }
    }
    Ok(result)
}