diff options
author | Christian Duerr <chrisduerr@users.noreply.github.com> | 2019-05-10 11:36:16 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-10 11:36:16 +0000 |
commit | 5d173f6df3b20308eb318cef4b58147b2197d5f9 (patch) | |
tree | 05638837bef25d65a818253814331a4f429f57ac /alacritty_terminal/src/config/debug.rs | |
parent | 7738c52ed4eb177ead9f43d14207ecb129cfe617 (diff) | |
download | r-alacritty-5d173f6df3b20308eb318cef4b58147b2197d5f9.tar.gz r-alacritty-5d173f6df3b20308eb318cef4b58147b2197d5f9.tar.bz2 r-alacritty-5d173f6df3b20308eb318cef4b58147b2197d5f9.zip |
Refactor config parsing files
This is a large refactor of the config parsing structure, attempting to
reduce the size of the file a bit by splitting it up into different
modules with more specific purposes.
This also fixes #2279.
Diffstat (limited to 'alacritty_terminal/src/config/debug.rs')
-rw-r--r-- | alacritty_terminal/src/config/debug.rs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/alacritty_terminal/src/config/debug.rs b/alacritty_terminal/src/config/debug.rs new file mode 100644 index 00000000..b7d1144f --- /dev/null +++ b/alacritty_terminal/src/config/debug.rs @@ -0,0 +1,61 @@ +use log::LevelFilter; +use serde::Deserializer; + +use crate::config::failure_default; + +/// Debugging options +#[serde(default)] +#[derive(Deserialize, Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +pub struct Debug { + #[serde(default = "default_log_level", deserialize_with = "deserialize_log_level")] + pub log_level: LevelFilter, + + #[serde(deserialize_with = "failure_default")] + pub print_events: bool, + + /// Keep the log file after quitting + #[serde(deserialize_with = "failure_default")] + pub persistent_logging: bool, + + /// Should show render timer + #[serde(deserialize_with = "failure_default")] + pub render_timer: bool, + + /// Record ref test + #[serde(deserialize_with = "failure_default")] + pub ref_test: bool, +} + +impl Default for Debug { + fn default() -> Self { + Self { + log_level: default_log_level(), + print_events: Default::default(), + persistent_logging: Default::default(), + render_timer: Default::default(), + ref_test: Default::default(), + } + } +} + +fn default_log_level() -> LevelFilter { + LevelFilter::Warn +} + +fn deserialize_log_level<'a, D>(deserializer: D) -> Result<LevelFilter, D::Error> +where + D: Deserializer<'a>, +{ + Ok(match failure_default::<D, String>(deserializer)?.to_lowercase().as_str() { + "off" | "none" => LevelFilter::Off, + "error" => LevelFilter::Error, + "warn" => LevelFilter::Warn, + "info" => LevelFilter::Info, + "debug" => LevelFilter::Debug, + "trace" => LevelFilter::Trace, + level => { + error!("Problem with config: invalid log level {}; using level Warn", level); + default_log_level() + }, + }) +} |