1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum ComponentsJsError {
5 #[error("IO error: {0}")]
6 Io(#[from] std::io::Error),
7
8 #[error("JSON parse error in {path}: {source}")]
9 JsonParse {
10 path: String,
11 source: serde_json::Error,
12 },
13
14 #[error("Semver error for version '{version}': {message}")]
15 Semver { version: String, message: String },
16
17 #[error("Context resolution error: {0}")]
18 ContextResolution(String),
19
20 #[error("Missing required field '{field}' in {location}")]
21 MissingField { field: String, location: String },
22
23 #[error("{0}")]
24 General(String),
25}
26
27pub type Result<T> = std::result::Result<T, ComponentsJsError>;