use core::result::Result as CoreResult;
use thiserror::Error as ThisError;
#[derive(ThisError, Debug, Clone)]
pub enum WorkspaceError {
#[error("Invalid package json format: {0}")]
InvalidPackageJson(String),
#[error("Invalid workspaces pattern: {0}")]
InvalidWorkspacesPattern(String),
#[error("Invalid workspaces pattern: {0}")]
InvalidPnpmWorkspace(String),
#[error("Package not found: {0}")]
PackageNotFound(String),
#[error("Workspace not found: {0}")]
WorkspaceNotFound(String),
#[error("Workspace config is missing: {0}")]
WorkspaceConfigMissing(String),
}
pub type WorkspaceResult<T> = CoreResult<T, WorkspaceError>;
impl AsRef<str> for WorkspaceError {
fn as_ref(&self) -> &str {
match self {
WorkspaceError::InvalidPackageJson(_) => "WorkspaceError::InvalidPackageJson",
WorkspaceError::InvalidWorkspacesPattern(_) => {
"WorkspaceError::InvalidWorkspacesPattern"
}
WorkspaceError::InvalidPnpmWorkspace(_) => "WorkspaceError::InvalidPnpmWorkspace",
WorkspaceError::PackageNotFound(_) => "WorkspaceError::PackageNotFound",
WorkspaceError::WorkspaceNotFound(_) => "WorkspaceError::WorkspaceNotFound",
WorkspaceError::WorkspaceConfigMissing(_) => "WorkspaceError::WorkspaceConfigMissing",
}
}
}