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()?; 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(()) }