assurance_runtime/
error.rs1use thiserror::Error;
2
3#[derive(Debug, Clone, PartialEq, Eq, Error)]
5pub enum AssuranceValidationError {
6 #[error("missing required field: {0}")]
7 MissingField(&'static str),
8 #[error("invalid artifact state: {0}")]
9 InvalidState(&'static str),
10}
11
12impl AssuranceValidationError {
13 pub fn kind(&self) -> &'static str {
14 match self {
15 Self::MissingField(..) => "missing_field",
16 Self::InvalidState(..) => "invalid_state",
17 }
18 }
19}
20
21pub type AssuranceValidationResult = Result<(), AssuranceValidationError>;
22
23pub(crate) fn require_non_empty(value: &str, field: &'static str) -> AssuranceValidationResult {
24 if value.trim().is_empty() {
25 return Err(AssuranceValidationError::MissingField(field));
26 }
27 Ok(())
28}
29
30pub(crate) fn require_non_empty_slice<T>(
31 values: &[T],
32 field: &'static str,
33) -> AssuranceValidationResult {
34 if values.is_empty() {
35 return Err(AssuranceValidationError::MissingField(field));
36 }
37 Ok(())
38}