1
0
Fork 0
owncast-chat-tui/src/main.rs

49 lines
1 KiB
Rust
Raw Normal View History

use clap::Parser;
mod app;
mod chat;
mod proto;
#[derive(Parser)]
/// simple owncast chat client to never leave your terminal
struct Args {
/// owncast server to connect to
server: String,
/// access token to use for login
#[arg(long)]
token: Option<String>,
}
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Args::parse();
// setup terminal
crossterm::terminal::enable_raw_mode()?;
let mut stdout = std::io::stdout();
crossterm::execute!(
stdout,
crossterm::terminal::EnterAlternateScreen
)?;
let backend = ratatui::backend::CrosstermBackend::new(stdout);
let mut terminal = ratatui::Terminal::new(backend)?;
terminal.hide_cursor()?;
2024-06-05 03:21:15 +02:00
let res = app::run(&mut terminal, args).await;
// restore terminal
crossterm::terminal::disable_raw_mode()?;
crossterm::execute!(
terminal.backend_mut(),
crossterm::terminal::LeaveAlternateScreen,
)?;
terminal.show_cursor()?;
if let Err(e) = res {
eprintln!("[!] Error executing app: {:?}", e);
}
Ok(())
}