1use std::path::PathBuf;
4use thiserror::Error;
5
6pub type Result<T> = std::result::Result<T, Error>;
8
9#[derive(Error, Debug)]
11pub enum Error {
12 #[error("Git error: {0}")]
14 Git(#[from] GitError),
15
16 #[error("JSON error: {0}")]
18 Json(#[from] serde_json::Error),
19}
20
21#[derive(Error, Debug)]
23pub enum GitError {
24 #[error("Failed to discover git repository at {path}: {message}")]
26 RepositoryNotFound { path: PathBuf, message: String },
27
28 #[error("Failed to read references: {0}")]
30 ReferencesError(String),
31
32 #[error("Failed to read commit {commit_id}: {message}")]
34 CommitReadError { commit_id: String, message: String },
35
36 #[error("Failed to read tree: {0}")]
38 TreeReadError(String),
39
40 #[error("Failed to read blob {blob_id}: {message}")]
42 BlobReadError { blob_id: String, message: String },
43
44 #[error("Git operation failed: {0}")]
46 OperationFailed(String),
47}