// SPDX-License-Identifier: EUPL-1.2 // SPDX-FileCopyrightText: 2021 Alyssa Ross use super::{FileDiff, MakeDiff}; use std::sync::mpsc::{Receiver, SyncSender}; use git2::Repository; pub fn main( repository: &Repository, receiver: Receiver<(impl MakeDiff, SyncSender>)>, ) { for (diff_maker, sender) in receiver { let diff = match diff_maker.make_diff(&repository) { Ok(diff) => diff, Err(e) => { let _ = sender.send(Err(e)); return; } }; if let Err(e) = diff.foreach( &mut |delta, _| { let _ = sender.send(Ok(FileDiff { status: delta.status(), old_path: delta.old_file().path().map(Into::into), })); true }, None, None, None, ) { let _ = sender.send(Err(e)); } } }