pub trait FileManager: Send + Sync {
// Required methods
fn scan_source(&self, layers: &[FileLayer]) -> Result<FileTree>;
fn scan_target(&self, paths: &[PathBuf]) -> Result<FileTree>;
fn diff(
&self,
source: &FileTree,
target: &FileTree,
) -> Result<Vec<FileDiff>>;
fn apply(&self, actions: &[FileAction], printer: &Printer) -> Result<()>;
}