alpm_srcinfo/pkgbuild_bridge/
error.rs1use alpm_parsers::prelude::*;
4use alpm_pkgbuild::bridge::Keyword;
5use alpm_types::{Name, SystemArchitecture};
6use fluent_i18n::t;
7use thiserror::Error;
8use winnow::error::ParseError;
9
10#[cfg(doc)]
11use crate::SourceInfo;
12
13#[derive(Debug, Error)]
16pub enum BridgeError {
17 #[error(transparent)]
19 AlpmType(#[from] alpm_types::Error),
20
21 #[error("{msg}", msg = t!("error-bridge-no-name"))]
23 NoName,
24
25 #[error("{msg}", msg = t!("error-bridge-invalid-package-name", {
27 "name" => name,
28 "error" => error.to_string()
29 }))]
30 InvalidPackageName {
31 name: String,
33 error: alpm_types::Error,
35 },
36
37 #[error("{msg}", msg = t!("error-bridge-undeclared-package", { "name" => .0 }))]
40 UndeclaredPackageName(String),
41
42 #[error("{msg}", msg = t!("error-bridge-unused-package-function", { "name" => .0.to_string() }))]
46 UnusedPackageFunction(Name),
47
48 #[error("{msg}", msg = t!("error-bridge-missing-required-keyword", { "keyword" => keyword.to_string() }))]
50 MissingRequiredKeyword {
51 keyword: Keyword,
53 },
54
55 #[error("{msg}", msg = t!("error-bridge-parse-error", {
57 "keyword" => keyword.to_string(),
58 "error" => error
59 }))]
60 ParseError {
61 keyword: Keyword,
63 error: String,
65 },
66
67 #[error("{msg}", msg = t!("error-bridge-wrong-variable-type", {
70 "keyword" => keyword,
71 "expected" => expected,
72 "actual" => actual
73 }))]
74 WrongVariableType {
75 keyword: String,
77 expected: String,
79 actual: String,
81 },
82
83 #[error("{msg}", msg = t!("error-bridge-unexpected-arch", {
85 "keyword" => keyword.to_string(),
86 "suffix" => suffix.to_string()
87 }))]
88 UnexpectedArchitecture {
89 keyword: Keyword,
91 suffix: SystemArchitecture,
93 },
94
95 #[error("{msg}", msg = t!("error-bridge-unclearable-value", { "keyword" => keyword.to_string() }))]
97 UnclearableValue {
98 keyword: Keyword,
100 },
101
102 #[error("{msg}", msg = t!("error-bridge-unexpected-array", {
104 "keyword" => keyword.to_string(),
105 "values" => values.iter().map(|s| format!("\"{s}\"")).collect::<Vec<_>>().join(", ")
106 }))]
107 UnexpectedArray {
108 keyword: Keyword,
110 values: Vec<String>,
112 },
113}
114
115impl<'a> From<(Keyword, ParseError<Input<'a>, ParseStack<'a>>)> for BridgeError {
116 fn from(value: (Keyword, ParseError<Input<'a>, ParseStack<'a>>)) -> Self {
118 Self::ParseError {
119 keyword: value.0,
120 error: value.1.to_string(),
121 }
122 }
123}