mdfried 0.20.2

A markdown viewer for the terminal that renders images and big headers
use std::sync::OnceLock;

use flexi_logger::{FlexiLoggerError, Logger, LoggerHandle};
use log::LevelFilter;

static LOGGER: OnceLock<LoggerHandle> = OnceLock::new();

pub fn init_logger(log_to_stderr: bool) -> Result<(), FlexiLoggerError> {
    let logger = if log_to_stderr {
        Logger::try_with_env_or_str("info")?
            .duplicate_to_stderr(flexi_logger::Duplicate::All)
            .start()
    } else {
        Logger::with(LevelFilter::Off).do_not_log().start()
    }?;
    if let Err(_logger) = LOGGER.set(logger) {
        panic!("error initializing global logger: already initialized.");
    }
    Ok(())
}

#[cfg(test)]
pub fn init_test_logger() {
    #[expect(clippy::let_underscore_untyped, clippy::unwrap_used)]
    let _ = Logger::try_with_env()
        .unwrap()
        .log_to_stderr()
        .start()
        .inspect_err(|err| eprintln!("test logger setup failed: {err}"));
}