radicle_cob/object/collaboration/
error.rs1use thiserror::Error;
4
5use crate::git;
6
7#[derive(Debug, Error)]
8pub enum Create {
9 #[error(transparent)]
10 Evaluate(Box<dyn std::error::Error + Send + Sync + 'static>),
11 #[error(transparent)]
12 CreateChange(#[from] git::change::error::Create),
13 #[error("failed to updated references for during object creation: {err}")]
14 Refs {
15 #[source]
16 err: Box<dyn std::error::Error + Send + Sync + 'static>,
17 },
18 #[error(transparent)]
19 Io(#[from] std::io::Error),
20 #[error("signer must belong to the author")]
21 SignerIsNotAuthor,
22}
23
24impl Create {
25 pub(crate) fn evaluate(err: impl std::error::Error + Send + Sync + 'static) -> Self {
26 Self::Evaluate(Box::new(err))
27 }
28}
29
30#[derive(Debug, Error)]
31#[error("failed to remove object: {err}")]
32pub struct Remove {
33 #[source]
34 pub(crate) err: Box<dyn std::error::Error + Send + Sync + 'static>,
35}
36
37#[derive(Debug, Error)]
38pub enum Retrieve {
39 #[error(transparent)]
40 Evaluate(Box<dyn std::error::Error + Send + Sync + 'static>),
41 #[error(transparent)]
42 Git(#[from] git2::Error),
43 #[error("failed to get references during object retrieval: {err}")]
44 Refs {
45 #[source]
46 err: Box<dyn std::error::Error + Send + Sync + 'static>,
47 },
48 #[error(transparent)]
49 Io(#[from] std::io::Error),
50}
51
52impl Retrieve {
53 pub(crate) fn evaluate(err: impl std::error::Error + Send + Sync + 'static) -> Self {
54 Self::Evaluate(Box::new(err))
55 }
56}
57
58#[derive(Debug, Error)]
59pub enum Update {
60 #[error(transparent)]
61 Evaluate(Box<dyn std::error::Error + Send + Sync + 'static>),
62 #[error("no object found")]
63 NoSuchObject,
64 #[error(transparent)]
65 CreateChange(#[from] git::change::error::Create),
66 #[error("failed to get references during object update: {err}")]
67 Refs {
68 #[source]
69 err: Box<dyn std::error::Error + Send + Sync + 'static>,
70 },
71 #[error(transparent)]
72 Git(#[from] git2::Error),
73 #[error(transparent)]
74 Io(#[from] std::io::Error),
75 #[error("signer must belong to the author")]
76 SignerIsNotAuthor,
77}
78
79impl Update {
80 pub(crate) fn evaluate(err: impl std::error::Error + Send + Sync + 'static) -> Self {
81 Self::Evaluate(Box::new(err))
82 }
83}