mod app;
mod config;
mod icons;
mod theme;
mod ui;
use crate::app::App;
use crossterm::{
execute,
terminal::{EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode},
};
use std::io;
fn main() -> io::Result<()> {
enable_raw_mode()?;
let mut stdout = io::stdout();
execute!(stdout, EnterAlternateScreen)?;
let backend = ratatui::backend::CrosstermBackend::new(stdout);
let mut terminal = ratatui::Terminal::new(backend)?;
let mut app = App::new();
let res = app.run(&mut terminal);
disable_raw_mode()?;
execute!(
terminal.backend_mut(),
LeaveAlternateScreen
)?;
terminal.show_cursor()?;
if let Some(v) = &app.update_available {
let version = env!("CARGO_PKG_VERSION");
println!();
println!(" ╔══════════════════════════════╗");
println!(" ║ Update available! ║");
println!(" ║ ║");
println!(" ║ v{} → v{:<16}║", version, v);
println!(" ║ ║");
println!(" ║ cargo install ffm --force ║");
println!(" ╚══════════════════════════════╝");
println!();
}
if let Err(err) = res {
println!("{:?}", err)
}
Ok(())
}