42 lines
1.0 KiB
Rust
42 lines
1.0 KiB
Rust
use std::{io, path::Path};
|
|
|
|
use color_eyre::Result;
|
|
use crossterm::{
|
|
execute,
|
|
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
|
|
};
|
|
use ratatui::{prelude::CrosstermBackend, Terminal};
|
|
|
|
use crate::app::App;
|
|
|
|
mod app;
|
|
mod event;
|
|
mod form;
|
|
mod manifest;
|
|
mod ui;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
enable_raw_mode()?;
|
|
let mut stdout = io::stdout();
|
|
execute!(stdout, EnterAlternateScreen)?;
|
|
let backend = CrosstermBackend::new(stdout);
|
|
let mut terminal = Terminal::new(backend)?;
|
|
|
|
// Set up panic hook to restore terminal
|
|
let original_hook = std::panic::take_hook();
|
|
std::panic::set_hook(Box::new(move |panic| {
|
|
let _ = disable_raw_mode();
|
|
let _ = execute!(io::stdout(), LeaveAlternateScreen);
|
|
original_hook(panic);
|
|
}));
|
|
|
|
// Run the app
|
|
let result = App::new().run(&mut terminal).await;
|
|
// Restore terminal
|
|
disable_raw_mode()?;
|
|
execute!(terminal.backend_mut(), LeaveAlternateScreen)?;
|
|
|
|
result
|
|
}
|