Skip to main content

open_kioku_errors/
lib.rs

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}