use core::result::Result as CoreResult;
use thiserror::Error as ThisError;
use super::FileSystemError;
#[derive(ThisError, Debug, Clone)]
pub enum MonorepoError {
#[error("Failed to detect monorepo type: {source}")]
Detection {
#[source]
source: FileSystemError,
},
#[error("Failed to parse monorepo descriptor: {source}")]
Parsing {
#[source]
source: FileSystemError,
},
#[error("Failed to read monorepo descriptor: {source}")]
Reading {
#[source]
source: FileSystemError,
},
#[error("Failed to write monorepo descriptor: {source}")]
Writing {
#[source]
source: FileSystemError,
},
#[error("Failed to find package manager")]
ManagerNotFound,
}
pub type MonorepoResult<T> = CoreResult<T, MonorepoError>;
impl AsRef<str> for MonorepoError {
fn as_ref(&self) -> &str {
match self {
MonorepoError::Detection { .. } => "MonorepoError::Detection",
MonorepoError::Parsing { .. } => "MonorepoError::Parsing",
MonorepoError::Reading { .. } => "MonorepoError::Reading",
MonorepoError::Writing { .. } => "MonorepoError::Writing",
MonorepoError::ManagerNotFound => "MonorepoError::ManagerNotFound",
}
}
}