diff --git a/notes.org b/notes.org new file mode 100644 index 0000000..a1fba55 --- /dev/null +++ b/notes.org @@ -0,0 +1,14 @@ +#+title: Notes + +* show errors with ariadne +:PROPERTIES: +:EFFORT: 10min +:END: +** errors should have a generic show() function +:PROPERTIES: +:EFFORT: 10min +:END: +:LOGBOOK: +CLOCK: [2025-05-03 sam. 18:40]--[2025-05-03 sam. 18:46] => 0:06 +:END: +** OSDBError::display() should take a filename and display it alongside the error diff --git a/src/error_display.rs b/src/error_display.rs new file mode 100644 index 0000000..5a302ff --- /dev/null +++ b/src/error_display.rs @@ -0,0 +1,26 @@ +use crate::{ + command::CommandParseError, meta_commands::MetaCommandParseError, + statements::StatementParseError, +}; + +pub trait OSDBError { + fn display(&self); +} + +impl OSDBError for MetaCommandParseError { + fn display(&self) { + println!("{self}") + } +} + +impl OSDBError for StatementParseError { + fn display(&self) { + println!("{self}") + } +} + +impl OSDBError for CommandParseError { + fn display(&self) { + println!("{self}") + } +} diff --git a/src/lib.rs b/src/lib.rs index 63ea784..5117e84 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ pub mod branding; pub mod cli; pub mod command; +pub mod error_display; pub mod meta_commands; pub mod statements; pub mod tokens; diff --git a/src/main.rs b/src/main.rs index 9a221f9..7f05008 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ use osdb::branding::startup_msg; use osdb::cli::read_input; use osdb::command::Command; +use osdb::error_display::OSDBError as _; fn main() { startup_msg(); @@ -12,7 +13,7 @@ fn main() { break; } } - Err(err) => eprintln!("{err}"), + Err(err) => err.display(), } } }