logging: Move all facilities to one file
This commit is contained in:
23
src/data.rs
23
src/data.rs
@ -19,17 +19,17 @@ use ::keyboard::{
|
|||||||
};
|
};
|
||||||
use ::layout;
|
use ::layout;
|
||||||
use ::layout::ArrangementKind;
|
use ::layout::ArrangementKind;
|
||||||
|
use ::logging::PrintWarnings;
|
||||||
use ::resources;
|
use ::resources;
|
||||||
use ::util::c::as_str;
|
use ::util::c::as_str;
|
||||||
use ::util::hash_map_map;
|
use ::util::hash_map_map;
|
||||||
use ::xdg;
|
use ::xdg;
|
||||||
|
|
||||||
// traits, derives
|
// traits, derives
|
||||||
|
use serde::Deserialize;
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
use std::iter::FromIterator;
|
use std::iter::FromIterator;
|
||||||
use serde::Deserialize;
|
use ::logging::WarningHandler;
|
||||||
use util::WarningHandler;
|
|
||||||
|
|
||||||
|
|
||||||
/// Gathers stuff defined in C or called by C
|
/// Gathers stuff defined in C or called by C
|
||||||
pub mod c {
|
pub mod c {
|
||||||
@ -152,14 +152,6 @@ fn list_layout_sources(
|
|||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
|
||||||
struct PrintWarnings;
|
|
||||||
|
|
||||||
impl WarningHandler for PrintWarnings {
|
|
||||||
fn handle(&mut self, warning: &str) {
|
|
||||||
println!("{}", warning);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn load_layout_data(source: DataSource)
|
fn load_layout_data(source: DataSource)
|
||||||
-> Result<::layout::LayoutData, LoadError>
|
-> Result<::layout::LayoutData, LoadError>
|
||||||
{
|
{
|
||||||
@ -672,14 +664,7 @@ mod tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
use std::error::Error as ErrorTrait;
|
use std::error::Error as ErrorTrait;
|
||||||
|
use ::logging::PanicWarn;
|
||||||
struct PanicWarn;
|
|
||||||
|
|
||||||
impl WarningHandler for PanicWarn {
|
|
||||||
fn handle(&mut self, warning: &str) {
|
|
||||||
panic!("{}", warning);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_path() {
|
fn test_parse_path() {
|
||||||
|
|||||||
@ -24,6 +24,7 @@ mod keyboard;
|
|||||||
mod layout;
|
mod layout;
|
||||||
mod locale;
|
mod locale;
|
||||||
mod locale_config;
|
mod locale_config;
|
||||||
|
mod logging;
|
||||||
mod outputs;
|
mod outputs;
|
||||||
mod popover;
|
mod popover;
|
||||||
mod resources;
|
mod resources;
|
||||||
|
|||||||
43
src/logging.rs
Normal file
43
src/logging.rs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*! Logging library */
|
||||||
|
|
||||||
|
use std::error::Error;
|
||||||
|
|
||||||
|
/// Sugar for logging errors in results
|
||||||
|
pub trait Warn {
|
||||||
|
type Value;
|
||||||
|
fn ok_warn(self, msg: &str) -> Option<Self::Value>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T, E: Error> Warn for Result<T, E> {
|
||||||
|
type Value = T;
|
||||||
|
fn ok_warn(self, msg: &str) -> Option<T> {
|
||||||
|
self.map_err(|e| {
|
||||||
|
eprintln!("{}: {}", msg, e);
|
||||||
|
e
|
||||||
|
}).ok()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait WarningHandler {
|
||||||
|
/// Handle a warning
|
||||||
|
fn handle(&mut self, warning: &str);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Prints warnings to stderr
|
||||||
|
pub struct PrintWarnings;
|
||||||
|
|
||||||
|
impl WarningHandler for PrintWarnings {
|
||||||
|
fn handle(&mut self, warning: &str) {
|
||||||
|
eprintln!("{}", warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Warning handler that will panic at any warning.
|
||||||
|
/// Don't use except in tests
|
||||||
|
pub struct PanicWarn;
|
||||||
|
|
||||||
|
impl WarningHandler for PanicWarn {
|
||||||
|
fn handle(&mut self, warning: &str) {
|
||||||
|
panic!("{}", warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -21,7 +21,7 @@
|
|||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
use glib::object::ObjectExt;
|
use glib::object::ObjectExt;
|
||||||
use util::Warn;
|
use logging::Warn;
|
||||||
|
|
||||||
/// Gathers stuff defined in C or called by C
|
/// Gathers stuff defined in C or called by C
|
||||||
pub mod c {
|
pub mod c {
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
use ::data::Layout;
|
use ::data::Layout;
|
||||||
use xkbcommon::xkb;
|
use xkbcommon::xkb;
|
||||||
|
|
||||||
use ::util::WarningHandler;
|
use ::logging::WarningHandler;
|
||||||
|
|
||||||
|
|
||||||
pub struct CountAndPrint(u32);
|
pub struct CountAndPrint(u32);
|
||||||
|
|||||||
21
src/util.rs
21
src/util.rs
@ -189,27 +189,6 @@ impl<T> Borrow<Rc<T>> for Pointer<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sugar for logging errors in results
|
|
||||||
pub trait Warn {
|
|
||||||
type Value;
|
|
||||||
fn ok_warn(self, msg: &str) -> Option<Self::Value>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T, E: std::error::Error> Warn for Result<T, E> {
|
|
||||||
type Value = T;
|
|
||||||
fn ok_warn(self, msg: &str) -> Option<T> {
|
|
||||||
self.map_err(|e| {
|
|
||||||
eprintln!("{}: {}", msg, e);
|
|
||||||
e
|
|
||||||
}).ok()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait WarningHandler {
|
|
||||||
/// Handle a warning
|
|
||||||
fn handle(&mut self, warning: &str);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|||||||
Reference in New Issue
Block a user