mirror of
https://github.com/orhun/systeroid
synced 2024-07-23 11:24:57 +00:00
refactor(tui): use generic backend for running
This commit is contained in:
parent
e6d018ee44
commit
4bf1f86fc2
|
@ -24,22 +24,14 @@ use crate::args::Args;
|
|||
use crate::command::Command;
|
||||
use crate::error::Result;
|
||||
use crate::event::{Event, EventHandler};
|
||||
use std::io::Write;
|
||||
use systeroid_core::cache::Cache;
|
||||
use systeroid_core::config::Config;
|
||||
use systeroid_core::sysctl::controller::Sysctl;
|
||||
use termion::input::MouseTerminal;
|
||||
use termion::raw::IntoRawMode;
|
||||
use termion::screen::AlternateScreen;
|
||||
use tui::backend::TermionBackend;
|
||||
use tui::backend::Backend;
|
||||
use tui::terminal::Terminal;
|
||||
|
||||
/// Runs `systeroid-tui`.
|
||||
pub fn run<Output: Write>(args: Args, output: Output) -> Result<()> {
|
||||
let output = output.into_raw_mode()?;
|
||||
let output = MouseTerminal::from(output);
|
||||
let output = AlternateScreen::from(output);
|
||||
let backend = TermionBackend::new(output);
|
||||
pub fn run<B: Backend>(args: Args, backend: B) -> Result<()> {
|
||||
let mut terminal = Terminal::new(backend)?;
|
||||
terminal.hide_cursor()?;
|
||||
terminal.clear()?;
|
||||
|
@ -87,6 +79,7 @@ pub fn run<Output: Write>(args: Args, output: Output) -> Result<()> {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use tui::backend::TestBackend;
|
||||
|
||||
#[test]
|
||||
fn test_systeroid_tui() -> Result<()> {
|
||||
|
@ -94,7 +87,8 @@ mod tests {
|
|||
tick_rate: 1000,
|
||||
..Args::default()
|
||||
};
|
||||
run(args, &mut Vec::new())?;
|
||||
let backend = TestBackend::new(40, 10);
|
||||
run(args, backend)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,11 +2,20 @@ use std::env;
|
|||
use std::io;
|
||||
use std::process;
|
||||
use systeroid_tui::args::Args;
|
||||
use systeroid_tui::error::Result;
|
||||
use termion::input::MouseTerminal;
|
||||
use termion::raw::IntoRawMode;
|
||||
use termion::screen::AlternateScreen;
|
||||
use tui::backend::TermionBackend;
|
||||
|
||||
fn main() {
|
||||
fn main() -> Result<()> {
|
||||
if let Some(args) = Args::parse(env::args().collect()) {
|
||||
let mut stderr = io::stderr();
|
||||
match systeroid_tui::run(args, &mut stderr) {
|
||||
let output = io::stderr();
|
||||
let output = output.into_raw_mode()?;
|
||||
let output = MouseTerminal::from(output);
|
||||
let output = AlternateScreen::from(output);
|
||||
let backend = TermionBackend::new(output);
|
||||
match systeroid_tui::run(args, backend) {
|
||||
Ok(_) => process::exit(0),
|
||||
Err(e) => {
|
||||
eprintln!("{}", e);
|
||||
|
@ -14,4 +23,5 @@ fn main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue