alpm_srcinfo/pkgbuild_bridge/
error.rs1use alpm_pkgbuild::bridge::Keyword;
4use alpm_types::{Name, SystemArchitecture};
5use fluent_i18n::t;
6use thiserror::Error;
7use winnow::error::{ContextError, ParseError};
8
9#[cfg(doc)]
10use crate::SourceInfo;
11
12#[derive(Debug, Error)]
15pub enum BridgeError {
16 #[error(transparent)]
18 AlpmType(#[from] alpm_types::Error),
19
20 #[error("{msg}", msg = t!("error-bridge-no-name"))]
22 NoName,
23
24 #[error("{msg}", msg = t!("error-bridge-invalid-package-name", {
26 "name" => name,
27 "error" => error.to_string()
28 }))]
29 InvalidPackageName {
30 name: String,
32 error: alpm_types::Error,
34 },
35
36 #[error("{msg}", msg = t!("error-bridge-undeclared-package", { "name" => .0 }))]
39 UndeclaredPackageName(String),
40
41 #[error("{msg}", msg = t!("error-bridge-unused-package-function", { "name" => .0.to_string() }))]
45 UnusedPackageFunction(Name),
46
47 #[error("{msg}", msg = t!("error-bridge-missing-required-keyword", { "keyword" => keyword.to_string() }))]
49 MissingRequiredKeyword {
50 keyword: Keyword,
52 },
53
54 #[error("{msg}", msg = t!("error-bridge-parse-error", {
56 "keyword" => keyword.to_string(),
57 "error" => error
58 }))]
59 ParseError {
60 keyword: Keyword,
62 error: String,
64 },
65
66 #[error("{msg}", msg = t!("error-bridge-wrong-variable-type", {
69 "keyword" => keyword,
70 "expected" => expected,
71 "actual" => actual
72 }))]
73 WrongVariableType {
74 keyword: String,
76 expected: String,
78 actual: String,
80 },
81
82 #[error("{msg}", msg = t!("error-bridge-unexpected-arch", {
84 "keyword" => keyword.to_string(),
85 "suffix" => suffix.to_string()
86 }))]
87 UnexpectedArchitecture {
88 keyword: Keyword,
90 suffix: SystemArchitecture,
92 },
93
94 #[error("{msg}", msg = t!("error-bridge-unclearable-value", { "keyword" => keyword.to_string() }))]
96 UnclearableValue {
97 keyword: Keyword,
99 },
100
101 #[error("{msg}", msg = t!("error-bridge-unexpected-array", {
103 "keyword" => keyword.to_string(),
104 "values" => values.iter().map(|s| format!("\"{s}\"")).collect::<Vec<_>>().join(", ")
105 }))]
106 UnexpectedArray {
107 keyword: Keyword,
109 values: Vec<String>,
111 },
112}
113
114impl<'a> From<(Keyword, ParseError<&'a str, ContextError>)> for BridgeError {
115 fn from(value: (Keyword, ParseError<&'a str, ContextError>)) -> Self {
117 Self::ParseError {
118 keyword: value.0,
119 error: value.1.to_string(),
120 }
121 }
122}