diff --git a/src/log_level.rs b/src/log_level.rs deleted file mode 100644 index ec08d76..0000000 --- a/src/log_level.rs +++ /dev/null @@ -1,131 +0,0 @@ -use serde::{de::Visitor, Deserialize, Serialize}; -use std::{fmt::Display, slice::Iter, str::FromStr}; - -use crate::termcolor::TermColor; - -#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize)] -pub enum LogLevel { - Trace, - Debug, - Info, - Warning, - Error, -} - -struct LogLevelStringVisitor; -impl<'de> Visitor<'de> for LogLevelStringVisitor { - type Value = LogLevel; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - formatter.write_str( - "A case-insensitive string among trace, debug, info, warning, warn, error, err", - ) - } - - fn visit_borrowed_str(self, v: &'de str) -> Result - where - E: serde::de::Error, - { - Ok(LogLevel::from_str(v).unwrap()) - } - - fn visit_string(self, v: String) -> Result - where - E: serde::de::Error, - { - Ok(LogLevel::from_str(&v).unwrap()) - } - - fn visit_str(self, v: &str) -> Result - where - E: serde::de::Error, - { - Ok(LogLevel::from_str(v).unwrap()) - } -} - -impl<'de> Deserialize<'de> for LogLevel { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - deserializer.deserialize_string(LogLevelStringVisitor) - } -} - -impl FromStr for LogLevel { - fn from_str(s: &str) -> Result { - Ok(match s.to_lowercase().as_str() { - "trace" => Self::Trace, - "debug" => Self::Debug, - "info" => Self::Info, - "warning" => Self::Warning, - "warn" => Self::Warning, - "error" => Self::Error, - "err" => Self::Error, - _ => Self::Debug, - }) - } - - type Err = (); -} - -impl LogLevel { - pub fn iter() -> Iter<'static, LogLevel> { - [ - Self::Trace, - Self::Debug, - Self::Info, - Self::Warning, - Self::Error, - ] - .iter() - } - - pub fn colored(&self) -> String { - match self { - Self::Trace => TermColor::Gray, - Self::Debug => TermColor::Gray, - Self::Info => TermColor::Blue, - Self::Warning => TermColor::Yellow, - Self::Error => TermColor::Red, - } - .colorize(&self.to_string()) - } -} - -impl From<&LogLevel> for u32 { - fn from(value: &LogLevel) -> Self { - match value { - LogLevel::Trace => 0, - LogLevel::Debug => 1, - LogLevel::Info => 2, - LogLevel::Warning => 3, - LogLevel::Error => 99, - } - } -} - -impl PartialOrd for LogLevel { - fn partial_cmp(&self, other: &Self) -> Option { - Some(u32::from(self).cmp(&other.into())) - } -} - -impl Ord for LogLevel { - fn cmp(&self, other: &Self) -> std::cmp::Ordering { - self.partial_cmp(other).unwrap() - } -} - -impl Display for LogLevel { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(match self { - LogLevel::Trace => "Trace", - LogLevel::Debug => "Debug", - LogLevel::Info => "Info", - LogLevel::Warning => "Warning", - LogLevel::Error => "Error", - }) - } -} diff --git a/src/log_parser.rs b/src/log_parser.rs index 3e77b24..e0c439c 100644 --- a/src/log_parser.rs +++ b/src/log_parser.rs @@ -1,5 +1,133 @@ -use crate::log_level::LogLevel; -use serde::{Deserialize, Serialize}; +use crate::termcolor::TermColor; +use serde::{de::Visitor, Deserialize, Serialize}; +use std::{fmt::Display, slice::Iter, str::FromStr}; + +#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize)] +pub enum LogLevel { + Trace, + Debug, + Info, + Warning, + Error, +} + +struct LogLevelStringVisitor; +impl<'de> Visitor<'de> for LogLevelStringVisitor { + type Value = LogLevel; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + formatter.write_str( + "A case-insensitive string among trace, debug, info, warning, warn, error, err", + ) + } + + fn visit_borrowed_str(self, v: &'de str) -> Result + where + E: serde::de::Error, + { + Ok(LogLevel::from_str(v).unwrap()) + } + + fn visit_string(self, v: String) -> Result + where + E: serde::de::Error, + { + Ok(LogLevel::from_str(&v).unwrap()) + } + + fn visit_str(self, v: &str) -> Result + where + E: serde::de::Error, + { + Ok(LogLevel::from_str(v).unwrap()) + } +} + +impl<'de> Deserialize<'de> for LogLevel { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + deserializer.deserialize_string(LogLevelStringVisitor) + } +} + +impl FromStr for LogLevel { + fn from_str(s: &str) -> Result { + Ok(match s.to_lowercase().as_str() { + "trace" => Self::Trace, + "debug" => Self::Debug, + "info" => Self::Info, + "warning" => Self::Warning, + "warn" => Self::Warning, + "error" => Self::Error, + "err" => Self::Error, + _ => Self::Debug, + }) + } + + type Err = (); +} + +impl LogLevel { + pub fn iter() -> Iter<'static, LogLevel> { + [ + Self::Trace, + Self::Debug, + Self::Info, + Self::Warning, + Self::Error, + ] + .iter() + } + + pub fn colored(&self) -> String { + match self { + Self::Trace => TermColor::Gray, + Self::Debug => TermColor::Gray, + Self::Info => TermColor::Blue, + Self::Warning => TermColor::Yellow, + Self::Error => TermColor::Red, + } + .colorize(&self.to_string()) + } +} + +impl From<&LogLevel> for u32 { + fn from(value: &LogLevel) -> Self { + match value { + LogLevel::Trace => 0, + LogLevel::Debug => 1, + LogLevel::Info => 2, + LogLevel::Warning => 3, + LogLevel::Error => 99, + } + } +} + +impl PartialOrd for LogLevel { + fn partial_cmp(&self, other: &Self) -> Option { + Some(u32::from(self).cmp(&other.into())) + } +} + +impl Ord for LogLevel { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + self.partial_cmp(other).unwrap() + } +} + +impl Display for LogLevel { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(match self { + LogLevel::Trace => "Trace", + LogLevel::Debug => "Debug", + LogLevel::Info => "Info", + LogLevel::Warning => "Warning", + LogLevel::Error => "Error", + }) + } +} #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct MonadoLog { diff --git a/src/main.rs b/src/main.rs index c359bf1..da75234 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,7 +31,6 @@ pub mod file_builders; pub mod gpu_profile; pub mod is_appimage; pub mod linux_distro; -pub mod log_level; pub mod log_parser; pub mod openxr_prober; pub mod paths; diff --git a/src/ui/debug_view.rs b/src/ui/debug_view.rs index b42583f..b45556a 100644 --- a/src/ui/debug_view.rs +++ b/src/ui/debug_view.rs @@ -3,7 +3,10 @@ use super::{ term_widget::TermWidget, util::copy_text, }; -use crate::{log_level::LogLevel, log_parser::MonadoLog, profile::Profile}; +use crate::{ + log_parser::{LogLevel, MonadoLog}, + profile::Profile, +}; use gtk::{glib::clone, prelude::*}; use relm4::{prelude::*, ComponentSender, SimpleComponent};