blob: 2eb311fe60aab1ee9eba96bdf3f3659388bcad69 (
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
|
#[macro_use] extern crate anyhow;
#[macro_use] extern crate log;
use std::path::PathBuf;
use anyhow::Result;
use cursive::CursiveExt;
mod mailstore;
mod sidebar;
mod main_view;
mod loader;
fn main() -> Result<()> {
cursive::logger::init();
let maildir_path = std::env::args()
.skip(1)
.next()
.map(PathBuf::from)
.ok_or_else(|| anyhow!("No path to maildir passed"))?;
let pathes = walkdir::WalkDir::new(maildir_path.clone())
.max_depth(1)
.follow_links(false)
.same_file_system(true)
.into_iter()
.filter_map(Result::ok)
.filter(|de| de.file_type().is_dir())
.map(|de| de.path().to_path_buf())
.collect();
let sidebar = sidebar::Sidebar::new(pathes);
let mainview = main_view::MainView::new();
let mut layout = cursive::views::LinearLayout::horizontal();
layout.add_child(sidebar);
layout.add_child(mainview);
let mut siv = cursive::Cursive::default();
siv.add_layer(layout);
siv.add_global_callback('q', |s| s.quit());
siv.add_global_callback('~', cursive::Cursive::toggle_debug_console);
debug!("Starting cursive");
siv.run();
Ok(())
}
|