blob: 89cdab8eaf2f636d4beceb177691cb9a461dab01 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#[macro_use] extern crate anyhow;
#[macro_use] extern crate log;
use anyhow::Result;
use cursive::Cursive;
use cursive::CursiveExt;
use cursive::event::{Event, EventTrigger};
use cursive_flexi_logger_view::FlexiLoggerView;
use flexi_logger::{Logger, LogTarget};
mod bindings;
mod main_view;
mod mail_view;
mod maillist_view;
mod configuration;
mod util;
use configuration::Configuration;
fn main() -> Result<()> {
let mut siv = cursive::Cursive::default();
Logger::with_env_or_str("debug")
.log_target(LogTarget::FileAndWriter(
cursive_flexi_logger_view::cursive_flexi_logger(&siv),
))
.directory("logs")
.suppress_timestamp()
.format(flexi_logger::colored_with_thread)
.start()
.expect("failed to initialize logger!");
debug!("Loading configuration");
let mut config = config::Config::default();
config
.merge(config::File::with_name("config"))?
.merge(config::Environment::with_prefix("MUAR"))?;
let config = config.try_into::<Configuration>()?;
debug!("Setting triggers");
let trigger: EventTrigger = Event::Char('q').into();
siv.set_on_post_event(trigger, |s| s.quit());
debug!("Adding mainview");
siv.add_fullscreen_layer(main_view::MainView::new(config)?);
siv.add_global_callback('~', |siv: &mut Cursive| siv.add_layer(FlexiLoggerView::scrollable()));
debug!("Starting cursive");
siv.run();
Ok(())
}
|