clscli/
clscli.rs

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