use thiserror::Error;
#[derive(Error, Debug)]
#[non_exhaustive]
pub enum CommandError {
#[error(transparent)]
InvalidPath(#[from] std::io::Error),
#[error("Invalid target directory: {0}. The target directory must exist and be a directory.")]
InvalidTargetDirectory(String),
#[error("Invalid stow directory: {0}. The stow directory must exist and be a directory.")]
StowDirectoryNotFound(String),
#[error("Invalid stow directory: {0}. It must not be the same as the target directory.")]
InvalidStowDirectory(String),
#[error("Directory Entry Already Exists: {0}")]
DirectoryEntryAlreadyExists(String),
#[error(
"The stow directory contains an invalid item: {0}. It must be a file or directory and not a symbolic link."
)]
InvalidStowItem(String),
}