use console::{Key, Term};
use miette::{IntoDiagnostic, Result};
use std::io::Error;
use signal_hook;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
use signal_hook::consts::signal::*;
use signal_hook::consts::TERM_SIGNALS;
use signal_hook::flag;
use signal_hook::iterator::exfiltrator::WithOrigin;
use signal_hook::iterator::SignalsInfo;
use signal_hook::low_level;
use std::thread;
pub fn restore_term() -> Result<()> {
thread::spawn(|| {
let mut signals = SignalsInfo::<WithOrigin>::new(&*TERM_SIGNALS).into_diagnostic().unwrap();
for info in &mut signals {
match info.signal {
term_sig => {
Term::stdout().show_cursor().into_diagnostic().unwrap();
assert!(TERM_SIGNALS.contains(&term_sig));
break;
}
}
}
});
Ok(())
}