#![allow(
clippy::collapsible_if,
clippy::module_inception,
clippy::type_complexity,
clippy::too_many_arguments,
clippy::needless_range_loop
)]
#[cfg(test)]
macro_rules! assert_matches {
($expected:pat, $actual:expr) => {
match $actual {
$expected => (),
unexpected => panic!(
"Expected {} matches {}, got {:?}",
stringify!($expected),
stringify!($actual),
unexpected
),
}
};
}
#[macro_use]
mod support;
mod account;
mod cli;
mod crypt;
mod imap;
mod lmtp;
mod mime;
#[cfg(test)]
mod test_data;
fn main() {
cli::main::main();
}
#[cfg(test)]
static INIT_TEST_LOG: std::sync::Once = std::sync::Once::new();
#[cfg(test)]
fn init_test_log() {
INIT_TEST_LOG.call_once(|| {
if !std::env::var("TEST_LOG").ok().map_or(false, |v| "1" == v) {
return;
}
init_simple_log();
})
}
fn init_simple_log() {
let stderr = log4rs::append::console::ConsoleAppender::builder()
.target(log4rs::append::console::Target::Stderr)
.encoder(Box::new(log4rs::encode::pattern::PatternEncoder::new(
"{d(%H:%M:%S%.3f)} [{l}][{t}] {m}{n}",
)))
.build();
let log_config = log4rs::config::Config::builder()
.appender(
log4rs::config::Appender::builder()
.build("stderr", Box::new(stderr)),
)
.build(
log4rs::config::Root::builder()
.appender("stderr")
.build(log::LevelFilter::Trace),
)
.unwrap();
log4rs::init_config(log_config).unwrap();
}