cove/cove-tui/src/main.rs
2022-03-02 01:39:13 +01:00

44 lines
987 B
Rust

mod config;
mod never;
mod replies;
mod room;
mod ui;
mod cove;
use std::io;
use config::Config;
use crossterm::event::{DisableMouseCapture, EnableMouseCapture};
use crossterm::execute;
use crossterm::terminal::{EnterAlternateScreen, LeaveAlternateScreen};
use tui::backend::CrosstermBackend;
use tui::Terminal;
use ui::Ui;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let config = Box::leak(Box::new(Config::load()));
let mut terminal = Terminal::new(CrosstermBackend::new(io::stdout()))?;
crossterm::terminal::enable_raw_mode()?;
execute!(
terminal.backend_mut(),
EnterAlternateScreen,
EnableMouseCapture
)?;
// Defer error handling so the terminal always gets restored properly
let result = Ui::run(config, &mut terminal).await;
execute!(
terminal.backend_mut(),
LeaveAlternateScreen,
DisableMouseCapture
)?;
crossterm::terminal::disable_raw_mode()?;
result?;
Ok(())
}