File: clscli.rs

package info (click to toggle)
rust-clearscreen 4.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 464 kB
  • sloc: makefile: 4
file content (50 lines) | stat: -rw-r--r-- 1,730 bytes parent folder | download
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),
}