Skip to main content

search_in_terminal/
lib.rs

1pub 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}