1use anyhow::{anyhow, Result};
4
5pub mod blob_tree_blake3_nfc;
6
7pub use blob_tree_blake3_nfc::{compute_hash_from_entries, TreeEntry};
8
9pub fn compute_tree_hash_from_entries(
10 entries: &[TreeEntry],
11 tree: &crate::model::SporeTree,
12) -> Result<String> {
13 match tree.algorithm.as_str() {
14 blob_tree_blake3_nfc::ALGORITHM => {
15 blob_tree_blake3_nfc::compute_hash_from_entries(entries, &tree.exclude_names)
16 }
17 other => Err(anyhow!("Unsupported tree algorithm: '{}'", other)),
18 }
19}
20
21pub fn compute_tree_hash_and_size_from_entries(
23 entries: &[TreeEntry],
24 tree: &crate::model::SporeTree,
25) -> Result<(String, u64)> {
26 match tree.algorithm.as_str() {
27 blob_tree_blake3_nfc::ALGORITHM => {
28 blob_tree_blake3_nfc::compute_hash_and_size_from_entries(entries, &tree.exclude_names)
29 }
30 other => Err(anyhow!("Unsupported tree algorithm: '{}'", other)),
31 }
32}