From 2f7234189b17a0b04a0e9223dc1818141345d5fd Mon Sep 17 00:00:00 2001 From: Joscha Date: Mon, 23 Jan 2023 23:03:17 +0100 Subject: [PATCH] Add --verbose flag --- CHANGELOG.md | 3 +++ src/logger.rs | 11 ++++++++--- src/main.rs | 7 +++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b163ad..f985868 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,9 @@ Procedure when bumping the version number: ## Unreleased +### Added +- `--verbose` flag + ### Changed - Respect colon-delimited emoji when calculating nick hue - Display colon-delimited emoji in nicks and messages diff --git a/src/logger.rs b/src/logger.rs index 29da638..692c0b6 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -3,7 +3,7 @@ use std::vec; use async_trait::async_trait; use crossterm::style::{ContentStyle, Stylize}; -use log::{Level, Log}; +use log::{Level, LevelFilter, Log}; use parking_lot::Mutex; use time::OffsetDateTime; use tokio::sync::mpsc; @@ -212,7 +212,7 @@ impl Log for Logger { } impl Logger { - pub fn init(level: Level) -> (Self, LoggerGuard, mpsc::UnboundedReceiver<()>) { + pub fn init(verbose: bool) -> (Self, LoggerGuard, mpsc::UnboundedReceiver<()>) { let (event_tx, event_rx) = mpsc::unbounded_channel(); let logger = Self { event_tx, @@ -222,8 +222,13 @@ impl Logger { messages: logger.messages.clone(), }; + log::set_max_level(if verbose { + LevelFilter::Debug + } else { + LevelFilter::Info + }); + log::set_boxed_logger(Box::new(logger.clone())).expect("logger already set"); - log::set_max_level(level.to_level_filter()); (logger, guard, event_rx) } diff --git a/src/main.rs b/src/main.rs index adf33e9..4fb274c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -57,6 +57,10 @@ impl Default for Command { #[derive(Debug, clap::Parser)] #[command(version)] struct Args { + /// Show more detailed log messages. + #[arg(long, short)] + verbose: bool, + /// Path to the config file. /// /// Relative paths are interpreted relative to the current directory. @@ -114,9 +118,8 @@ fn set_offline(config: &mut Config, args_offline: bool) { #[tokio::main] async fn main() -> anyhow::Result<()> { - let (logger, logger_guard, logger_rx) = Logger::init(log::Level::Debug); - let args = Args::parse(); + let (logger, logger_guard, logger_rx) = Logger::init(args.verbose); let dirs = ProjectDirs::from("de", "plugh", "cove").expect("unable to determine directories"); let config_path = args