feat(tui): ratatui skeleton with layout
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -1 +1,41 @@
|
||||
fn main() {}
|
||||
use clap::Parser;
|
||||
|
||||
mod app;
|
||||
mod ui;
|
||||
|
||||
#[derive(Parser)]
|
||||
#[command(name = "log-viewer", about = "A log viewer TUI")]
|
||||
struct Cli {
|
||||
/// Log files to open
|
||||
files: Vec<String>,
|
||||
}
|
||||
|
||||
fn main() -> anyhow::Result<()> {
|
||||
let _cli = Cli::parse();
|
||||
|
||||
crossterm::terminal::enable_raw_mode()?;
|
||||
let mut stdout = std::io::stdout();
|
||||
crossterm::execute!(stdout, crossterm::terminal::EnterAlternateScreen)?;
|
||||
let backend = ratatui::backend::CrosstermBackend::new(stdout);
|
||||
let mut terminal = ratatui::Terminal::new(backend)?;
|
||||
|
||||
let mut app = app::App::new();
|
||||
|
||||
while !app.should_quit {
|
||||
terminal.draw(|frame| ui::render(frame, &app))?;
|
||||
if crossterm::event::poll(std::time::Duration::from_millis(100))?
|
||||
&& let crossterm::event::Event::Key(key) = crossterm::event::read()?
|
||||
{
|
||||
app.handle_key(key);
|
||||
}
|
||||
}
|
||||
|
||||
crossterm::terminal::disable_raw_mode()?;
|
||||
crossterm::execute!(
|
||||
terminal.backend_mut(),
|
||||
crossterm::terminal::LeaveAlternateScreen
|
||||
)?;
|
||||
terminal.show_cursor()?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user