Skip to main content

radicle/storage/refs/sigrefs/write/
error.rs

1use radicle_oid::Oid;
2use thiserror::Error;
3
4use crate::storage::refs::sigrefs::git::{object, reference};
5
6// TODO: use commit NID (and RID?) for traceability
7#[derive(Debug, Error)]
8#[non_exhaustive]
9pub enum Write {
10    #[error(transparent)]
11    Head(Head),
12    #[error(transparent)]
13    Commit(Commit),
14    #[error(transparent)]
15    Reference(reference::error::WriteReference),
16}
17
18// TODO: use commit OID for traceability
19#[derive(Debug, Error)]
20#[non_exhaustive]
21pub enum Commit {
22    #[error(transparent)]
23    Tree(Tree),
24    #[error(transparent)]
25    Write(object::error::WriteCommit),
26}
27
28// TODO: use commit OID for traceability
29#[derive(Debug, Error)]
30#[non_exhaustive]
31pub enum Tree {
32    #[error("failed to sign references payload")]
33    Sign(crypto::signature::Error),
34    #[error(transparent)]
35    Write(object::error::WriteTree),
36}
37
38// TODO: use commit OID for traceability
39#[derive(Debug, Error)]
40#[non_exhaustive]
41#[error(transparent)]
42pub enum Head {
43    #[error(transparent)]
44    Reference(reference::error::FindReference),
45    #[error(transparent)]
46    Commit(super::read::error::Commit),
47    #[error("failed to verify commit {commit}: {source}")]
48    Verify {
49        commit: Oid,
50        source: super::read::error::Verify,
51    },
52}