better log level parsing

This commit is contained in:
Edward Shen 2019-12-23 22:13:38 -05:00
parent 5218c8a92d
commit b09f1b96ea
Signed by: edward
GPG key ID: F350507060ED6C90

View file

@ -6,6 +6,7 @@ use hotwatch::{Event, Hotwatch};
use libc::daemon; use libc::daemon;
use log::{debug, error, info, trace, warn}; use log::{debug, error, info, trace, warn};
use serde::Deserialize; use serde::Deserialize;
use std::cmp::min;
use std::collections::HashMap; use std::collections::HashMap;
use std::fmt; use std::fmt;
use std::fs::{read_to_string, OpenOptions}; use std::fs::{read_to_string, OpenOptions};
@ -71,15 +72,16 @@ fn main() -> Result<(), BunBunError> {
.author(crate_authors!()) .author(crate_authors!())
.get_matches(); .get_matches();
let log_level = match (matches.occurrences_of("verbose") let log_level = match min(matches.occurrences_of("verbose"), 3) as i8
- matches.occurrences_of("quiet")) as i32 - min(matches.occurrences_of("quiet"), 2) as i8
{ {
std::i32::MIN..=-2 => None, -2 => None,
-1 => Some(log::Level::Error), -1 => Some(log::Level::Error),
0 => Some(log::Level::Warn), 0 => Some(log::Level::Warn),
1 => Some(log::Level::Info), 1 => Some(log::Level::Info),
2 => Some(log::Level::Debug), 2 => Some(log::Level::Debug),
3..=std::i32::MAX => Some(log::Level::Trace), 3 => Some(log::Level::Trace),
_ => unreachable!(),
}; };
if let Some(level) = log_level { if let Some(level) = log_level {