simple_git/
error.rs

1use gix::clone;
2use thiserror::Error as ThisError;
3
4#[derive(Debug, ThisError)]
5#[error(transparent)]
6pub struct GitError(#[from] GitErrorInner);
7
8#[derive(Debug, ThisError)]
9pub(super) enum GitErrorInner {
10    #[error("Failed to prepare for fetch: {0}")]
11    PrepareFetchError(#[source] Box<clone::Error>),
12
13    #[error("Failed to fetch: {0}")]
14    FetchError(#[source] Box<clone::fetch::Error>),
15
16    #[error("Failed to checkout: {0}")]
17    CheckOutError(#[source] Box<clone::checkout::main_worktree::Error>),
18
19    #[error("HEAD ref was corrupt in crates-io index repository clone: {0}")]
20    HeadCommit(#[source] Box<gix::reference::head_commit::Error>),
21
22    #[error("tree of head commit wasn't present in crates-io index repository clone: {0}")]
23    GetTreeOfCommit(#[source] Box<gix::object::commit::Error>),
24
25    #[error("An object was missing in the crates-io index repository clone: {0}")]
26    ObjectLookup(#[source] Box<gix::object::find::existing::Error>),
27}
28
29impl From<clone::Error> for GitErrorInner {
30    fn from(e: clone::Error) -> Self {
31        Self::PrepareFetchError(Box::new(e))
32    }
33}
34
35impl From<clone::fetch::Error> for GitErrorInner {
36    fn from(e: clone::fetch::Error) -> Self {
37        Self::FetchError(Box::new(e))
38    }
39}
40
41impl From<clone::checkout::main_worktree::Error> for GitErrorInner {
42    fn from(e: clone::checkout::main_worktree::Error) -> Self {
43        Self::CheckOutError(Box::new(e))
44    }
45}
46
47impl From<gix::reference::head_commit::Error> for GitErrorInner {
48    fn from(e: gix::reference::head_commit::Error) -> Self {
49        Self::HeadCommit(Box::new(e))
50    }
51}
52
53impl From<gix::object::commit::Error> for GitErrorInner {
54    fn from(e: gix::object::commit::Error) -> Self {
55        Self::GetTreeOfCommit(Box::new(e))
56    }
57}
58
59impl From<gix::object::find::existing::Error> for GitErrorInner {
60    fn from(e: gix::object::find::existing::Error) -> Self {
61        Self::ObjectLookup(Box::new(e))
62    }
63}
64
65#[derive(Debug, ThisError)]
66#[error(transparent)]
67pub struct GitUrlParseError(pub(super) gix::url::parse::Error);