search_in_terminal/
lib.rs1pub mod core;
2pub mod error;
3pub mod search;
4pub mod ui;
5
6pub use core::app::App;
7pub use core::config::CONFIG;
8pub use error::types::SearchError;
9pub use search::models::SearchResult;
10
11use anyhow::Result;
12use crossterm::{
13 execute,
14 terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
15};
16use ratatui::prelude::*;
17use std::io::stdout;
18
19pub async fn run() -> Result<()> {
20 enable_raw_mode()?;
21 let mut stdout = stdout();
22 execute!(stdout, EnterAlternateScreen)?;
23 let backend = CrosstermBackend::new(stdout);
24 let mut terminal = Terminal::new(backend)?;
25
26 let mut app = App::new();
27 let res = ui::terminal::run_app(&mut terminal, &mut app).await;
28
29 disable_raw_mode()?;
30 execute!(terminal.backend_mut(), LeaveAlternateScreen)?;
31 terminal.show_cursor()?;
32
33 if let Err(err) = res {
34 println!("Error: {}", err);
35 }
36
37 Ok(())
38}