1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, DeployError>;
4
5#[derive(Debug, Error)]
6pub enum DeployError {
7 #[error("config validation failed: {0}")]
8 Validation(String),
9 #[error("unknown deploy target `{target}`{suggestions}")]
10 UnknownTarget {
11 target: String,
12 suggestions: String,
13 },
14 #[error("dependency graph error: {0}")]
15 Graph(String),
16 #[error("OCI error: {0}")]
17 Oci(String),
18 #[error("Kubernetes error: {0}")]
19 K8s(String),
20 #[error("health check failed: {0}")]
21 Health(String),
22 #[error("verify failed: {0}")]
23 Verify(String),
24 #[error("io error: {0}")]
25 Io(String),
26 #[error("deploy cancelled")]
27 Cancelled,
28 #[error("{0}")]
29 Other(String),
30}
31
32impl From<xbp_oci::OciError> for DeployError {
33 fn from(value: xbp_oci::OciError) -> Self {
34 Self::Oci(value.to_string())
35 }
36}
37
38impl From<xbp_k8s::K8sError> for DeployError {
39 fn from(value: xbp_k8s::K8sError) -> Self {
40 Self::K8s(value.to_string())
41 }
42}