use crossterm::{
event::{DisableMouseCapture, EnableMouseCapture},
execute,
terminal::{EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode},
};
type Result<T> = std::result::Result<T, Box<dyn std::error::Error + Send + Sync>>;
pub fn setup_terminal() -> Result<()> {
if std::env::var("PACSEA_TEST_HEADLESS").ok().as_deref() == Some("1") {
let _ = execute!(std::io::stdout(), DisableMouseCapture);
return Ok(());
}
enable_raw_mode()?;
execute!(std::io::stdout(), EnterAlternateScreen, EnableMouseCapture)?;
Ok(())
}
pub fn restore_terminal() -> Result<()> {
if std::env::var("PACSEA_TEST_HEADLESS").ok().as_deref() == Some("1") {
return Ok(());
}
disable_raw_mode()?;
execute!(std::io::stdout(), DisableMouseCapture, LeaveAlternateScreen)?;
Ok(())
}