1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
use clearscreen::ClearScreen;
use std::{env, thread::sleep, time::Duration};
use thiserror::Error;
fn main() -> Result<(), Error> {
if let Some(variant) = env::args().nth(1) {
let cs = match variant.as_str() {
"auto" => ClearScreen::default(),
"Terminfo" => ClearScreen::Terminfo,
"TerminfoScreen" => ClearScreen::TerminfoScreen,
"TerminfoScrollback" => ClearScreen::TerminfoScrollback,
"TerminfoReset" => ClearScreen::TerminfoReset,
"XtermClear" => ClearScreen::XtermClear,
"XtermReset" => ClearScreen::XtermReset,
"TputClear" => ClearScreen::TputClear,
"TputReset" => ClearScreen::TputReset,
"Cls" => ClearScreen::Cls,
"WindowsVt" => ClearScreen::WindowsVt,
"WindowsVtClear" => ClearScreen::WindowsVtClear,
#[cfg(feature = "windows-console")]
"WindowsConsoleClear" => ClearScreen::WindowsConsoleClear,
#[cfg(feature = "windows-console")]
"WindowsConsoleBlank" => ClearScreen::WindowsConsoleBlank,
"WindowsCooked" => ClearScreen::WindowsCooked,
"VtRis" => ClearScreen::VtRis,
"VtLeaveAlt" => ClearScreen::VtLeaveAlt,
"VtCooked" => ClearScreen::VtCooked,
"VtWellDone" => ClearScreen::VtWellDone,
_ => return Err(Error::UnknownVariant(variant)),
};
println!("variant = {:?}, sleeping 1 second", cs);
sleep(Duration::from_secs(1));
cs.clear()?;
Ok(())
} else {
println!("Usage: cargo run --example clscli -- <variant>\nWhere <variant> is one of the ClearScreen enum variants, same casing, or 'auto'.\nI recommend piping into `hexdump -C` to see what’s happening.");
Ok(())
}
}
#[derive(Debug, Error)]
enum Error {
#[error("unknown variant: {0}")]
UnknownVariant(String),
#[error(transparent)]
ClearScreen(#[from] clearscreen::Error),
}
|