1use thiserror::Error;
2use std::path::PathBuf;
3use notify::Error as NotifyError; #[derive(Error, Debug)]
6pub enum SyncError {
7 #[error("Source directory not found: {0}")]
8 SourceNotFound(PathBuf),
9
10 #[error("Target directory is not writable: {0}")]
11 TargetNotWritable(PathBuf),
12
13 #[error("File is in use or permission denied: {0}")]
14 PermissionDenied(PathBuf),
15
16 #[error("Directory traversal error: {0}")]
17 WalkError(#[from] walkdir::Error),
18
19 #[error("I/O error: {0}")]
20 IoError(#[from] std::io::Error),
21
22 #[error("File watcher error: {0}")]
24 WatchError(#[from] NotifyError),
25
26 #[error("Sync logic error: {0}")]
28 SyncLogicError(String),
29
30 #[error("Failed to delete extra files: {0}")]
32 DeleteError(String),
33}
34
35impl From<anyhow::Error> for SyncError {
37 fn from(err: anyhow::Error) -> Self {
38 SyncError::SyncLogicError(err.to_string())
39 }
40}