summaryrefslogtreecommitdiff
path: root/src/patches/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/patches/error.rs')
-rw-r--r--src/patches/error.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/patches/error.rs b/src/patches/error.rs
new file mode 100644
index 0000000..a02ed94
--- /dev/null
+++ b/src/patches/error.rs
@@ -0,0 +1,29 @@
+// Copyright © 2022 Kim Altintop <kim@eagain.io>
+// SPDX-License-Identifier: GPL-2.0-only WITH openvpn-openssl-exception
+
+use thiserror::Error;
+
+#[derive(Debug, Error)]
+#[non_exhaustive]
+pub enum FromTree {
+ #[error("'{name}' not found in tree")]
+ NotFound { name: &'static str },
+
+ #[error("expected '{name}' to be a blob, but found {kind:?}")]
+ TypeMismatch {
+ name: &'static str,
+ kind: Option<git2::ObjectType>,
+ },
+
+ #[error("max blob size {max} exceeded: {found}")]
+ BlobSize { max: usize, found: usize },
+
+ #[error("type conversion from byte slice to T failed")]
+ TypeConversion(#[source] crate::Error),
+
+ #[error("invalid signature")]
+ InvalidSignature(#[from] signature::Error),
+
+ #[error(transparent)]
+ Git(#[from] git2::Error),
+}