generated from PlexSheep/rs-base
40 lines
954 B
Rust
40 lines
954 B
Rust
use std::io;
|
|
|
|
use libpt::cli::clap::Parser;
|
|
use ratatui::backend::CrosstermBackend;
|
|
use ratatui::crossterm::event::{DisableMouseCapture, EnableMouseCapture};
|
|
use ratatui::crossterm::execute;
|
|
use ratatui::crossterm::terminal::{
|
|
disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen,
|
|
};
|
|
use ratatui::Terminal;
|
|
|
|
use self::clock::Clock;
|
|
|
|
mod clock;
|
|
|
|
fn main() -> anyhow::Result<()> {
|
|
// setup the cli
|
|
let clock = Clock::parse();
|
|
|
|
// setup terminal
|
|
enable_raw_mode()?;
|
|
let mut stdout = io::stdout();
|
|
execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
|
|
let backend = CrosstermBackend::new(stdout);
|
|
let mut terminal = Terminal::new(backend)?;
|
|
|
|
let result = clock.run(&mut terminal);
|
|
|
|
// restore terminal
|
|
disable_raw_mode()?;
|
|
execute!(
|
|
terminal.backend_mut(),
|
|
LeaveAlternateScreen,
|
|
DisableMouseCapture
|
|
)?;
|
|
terminal.show_cursor()?;
|
|
|
|
result
|
|
}
|