barbacane_compiler/
error.rs1use serde::{Deserialize, Serialize};
2use thiserror::Error;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct CompileWarning {
7 pub code: String,
9 pub message: String,
11 pub location: Option<String>,
13}
14
15#[derive(Debug, Error)]
17pub enum CompileError {
18 #[error(transparent)]
20 Parse(#[from] crate::spec_parser::ParseError),
21
22 #[error("E1010: routing conflict: {0}")]
24 RoutingConflict(String),
25
26 #[error("E1020: operation has no x-barbacane-dispatch: {0}")]
28 MissingDispatch(String),
29
30 #[error("E1031: plaintext HTTP upstream URL not allowed in production: {0}")]
32 PlaintextUpstream(String),
33
34 #[error("E1040: plugin '{0}' used in spec but not declared in barbacane.yaml")]
36 UndeclaredPlugin(String),
37
38 #[error("E1011: middleware missing 'name': {0}")]
40 MissingMiddlewareName(String),
41
42 #[error("E1050: ambiguous route: {0}")]
44 AmbiguousRoute(String),
45
46 #[error("E1051: schema too deep: {0}")]
48 SchemaTooDeep(String),
49
50 #[error("E1052: schema too complex: {0}")]
52 SchemaTooComplex(String),
53
54 #[error("E1054: invalid path template: {0}")]
56 InvalidPathTemplate(String),
57
58 #[error("E1055: duplicate operationId '{0}': {1}")]
60 DuplicateOperationId(String, String),
61
62 #[error("manifest error: {0}")]
64 ManifestError(String),
65
66 #[error("plugin resolution error: {0}")]
68 PluginResolution(String),
69
70 #[error("I/O error: {0}")]
72 Io(#[from] std::io::Error),
73
74 #[error("JSON error: {0}")]
76 Json(#[from] serde_json::Error),
77}