use thiserror::Error;
#[derive(Debug, Error)]
#[allow(dead_code)]
pub enum FsearchError {
#[error("🚫 Directory does not exist: {0}")]
DirectoryNotFound(String),
#[error("🚫 Path is not a directory: {0}")]
NotADirectory(String),
#[error("❌ Invalid depth: must be >= 0, got {0}")]
InvalidDepth(i64),
#[error("❌ Invalid pattern '{pattern}': {reason}")]
InvalidPattern { pattern: String, reason: String },
#[error("🔍 Hash algorithm '{0}' is not supported (use 'md5' or 'sha256')")]
UnsupportedHashAlgorithm(String),
#[error("📁 IO error on '{path}': {source}")]
Io {
path: String,
#[source]
source: std::io::Error,
},
#[error("🔒 Permission denied: {0}")]
PermissionDenied(String),
#[error("⚙️ Config error: {0}")]
Config(String),
#[error("⚙️ Config parse error in '{path}': {source}")]
ConfigParse {
path: String,
#[source]
source: toml::de::Error,
},
#[error("🛑 Operation interrupted by user")]
Interrupted,
}
pub type FsearchResult<T> = Result<T, FsearchError>;