1use std::path::PathBuf;
2
3pub type Result<T> = std::result::Result<T, OkError>;
4
5#[derive(Debug, thiserror::Error)]
6pub enum OkError {
7 #[error("configuration error: {0}")]
8 Config(String),
9 #[error("repository error: {0}")]
10 Repository(String),
11 #[error("index error: {0}")]
12 Index(String),
13 #[error("storage error: {0}")]
14 Storage(String),
15 #[error("parse error in {path}: {message}")]
16 Parse { path: PathBuf, message: String },
17 #[error("search error: {0}")]
18 Search(String),
19 #[error("symbol not found: {0}")]
20 SymbolNotFound(String),
21 #[error("operation denied by policy: {0}")]
22 PolicyDenied(String),
23 #[error("unsupported operation: {0}")]
24 Unsupported(String),
25 #[error("I/O error: {0}")]
26 Io(#[from] std::io::Error),
27 #[error("JSON error: {0}")]
28 Json(#[from] serde_json::Error),
29}
30
31impl OkError {
32 pub fn user_message(&self) -> String {
33 match self {
34 Self::PolicyDenied(message) => {
35 format!("Denied by Open Kioku security policy: {message}")
36 }
37 _ => self.to_string(),
38 }
39 }
40}