use ortho_config::MergeComposer;
use std::sync::Arc;
use super::{DiscoveredLayers, diagnostics::short_hash};
use crate::cli::MergeEvent;
pub(crate) fn push_discovered_file_layers(
composer: &mut MergeComposer,
errors: &mut Vec<Arc<ortho_config::OrthoError>>,
discovered: DiscoveredLayers,
events: &mut Vec<MergeEvent>,
) {
let (layers, discovery_errors) = discovered.into_parts();
if discovery_errors.is_empty() {
events.push(MergeEvent::FileLayersCollected {
layer_count: layers.len(),
});
} else {
events.push(MergeEvent::FileLayerCollectionFailed {
error_count: discovery_errors.len(),
});
}
errors.extend(discovery_errors);
for layer in layers {
events.push(MergeEvent::FileLayerApplied {
path_hash: layer
.path()
.map(|path| short_hash(path.as_str().as_bytes())),
});
composer.push_layer(layer);
}
}