devrc_core/
logging.rs

1use crate::workshop::Designer;
2
3#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Default)]
4pub enum LogLevel {
5    #[default]
6    Off = 0, // Quiet mode
7    Error = 1,
8    Info = 2,  // Show tasks commands
9    Debug = 3, // Show info messages such `==> Running task`
10}
11
12impl From<u8> for LogLevel {
13    fn from(level: u8) -> Self {
14        match level {
15            0 => LogLevel::Error,
16            1 => LogLevel::Info,
17            x if x >= 2 => LogLevel::Debug,
18            _ => LogLevel::Debug,
19        }
20    }
21}
22
23impl LogLevel {
24    pub fn info(&self, content: &str, designer: &Designer) {
25        if *self >= Self::Info {
26            eprintln!("{}{}{}", designer.prefix(), &content, designer.suffix());
27        }
28    }
29
30    pub fn debug(&self, content: &str, designer: &Designer) {
31        if *self >= Self::Debug {
32            eprintln!("{}{}{}", designer.prefix(), &content, designer.suffix());
33        }
34    }
35
36    pub fn error(&self, content: &str, designer: &Designer) {
37        if *self >= Self::Error {
38            eprintln!("{}{}{}", designer.prefix(), &content, designer.suffix());
39        }
40    }
41}