use std::io; use cliclack::{clear_screen, intro, log, outro, outro_cancel, spinner}; use console::{style, Key, Term}; fn main() -> std::io::Result<()> { ctrlc::set_handler(move || {}).expect("setting Ctrl-C handler"); clear_screen()?; intro(style(" spinner ").on_cyan().black())?; log::remark("Press Esc, Enter, or Ctrl-C")?; let spinner = spinner(); spinner.start("Installation"); let term = Term::stderr(); loop { match term.read_key() { Ok(Key::Escape) => { spinner.cancel("Installation"); outro_cancel("Cancelled")?; } Ok(Key::Enter) => { spinner.stop("Installation"); outro("Done!")?; } Err(e) if e.kind() == io::ErrorKind::Interrupted => { spinner.error("Installation"); outro_cancel("Interrupted")?; } _ => continue, } break; } Ok(()) }