Skip to main content

gen_completions/parse_deser/
error.rs

1use std::io;
2
3use miette::{Diagnostic, NamedSource};
4use thiserror::Error;
5
6use super::kdl::KdlDeserError;
7
8#[derive(Debug, Diagnostic, Error)]
9pub enum Error {
10  #[error("{file_path} has no extension")]
11  #[diagnostic(code(gen_completions::deser::no_ext), url(docsrs))]
12  NoExtension { file_path: String },
13
14  #[error("{file_path} has an unrecognizable extension")]
15  #[diagnostic(code(gen_completions::deser::unrecognizable_ext), url(docsrs))]
16  UnrecognizableExtension { file_path: String },
17
18  #[error("Error encountered while reading {file_path}")]
19  #[diagnostic(code(gen_completions::deser::io_error), url(docsrs))]
20  Io {
21    file_path: String,
22    #[source]
23    source: io::Error,
24  },
25
26  #[error("Error encountered while deserializing")]
27  #[diagnostic(forward(error))]
28  Deser {
29    #[source_code]
30    source_code: NamedSource,
31    #[source]
32    error: Box<DeserError>,
33  },
34}
35
36/// An error encountered while deserializing
37#[derive(Debug, Diagnostic, Error)]
38pub enum DeserError {
39  #[error(transparent)]
40  #[diagnostic()]
41  Json(#[from] serde_json::Error),
42
43  #[error(transparent)]
44  #[diagnostic(transparent)]
45  Kdl(#[from] KdlDeserError),
46}