use std::result::Result as StdResult;
#[derive(Debug, thiserror::Error)]
pub enum PackageError {
#[error("{0}")]
Manifest(String),
#[error("{0}")]
Lockfile(String),
#[error("{0}")]
Registry(String),
#[error("{0}")]
Validation(String),
#[error("{0}")]
Ops(String),
#[error("{0}")]
Extensions(String),
#[error("{0}")]
Skill(String),
#[error("{0}")]
Other(String),
}
impl PackageError {
pub fn message(&self) -> &str {
match self {
PackageError::Manifest(s)
| PackageError::Lockfile(s)
| PackageError::Registry(s)
| PackageError::Validation(s)
| PackageError::Ops(s)
| PackageError::Extensions(s)
| PackageError::Skill(s)
| PackageError::Other(s) => s.as_str(),
}
}
}
impl From<String> for PackageError {
fn from(value: String) -> Self {
PackageError::Other(value)
}
}
impl From<&str> for PackageError {
fn from(value: &str) -> Self {
PackageError::Other(value.to_string())
}
}
impl From<PackageError> for String {
fn from(error: PackageError) -> Self {
error.to_string()
}
}
#[allow(dead_code)]
pub type PackageResult<T> = StdResult<T, PackageError>;