sheetsui/src/main.rs

42 lines
1.0 KiB
Rust
Raw Normal View History

2024-10-30 14:34:45 -04:00
use std::{path::PathBuf, process::ExitCode};
2024-10-23 16:14:18 -04:00
use clap::Parser;
use crossterm::event;
2024-10-29 19:47:50 -04:00
use ratatui;
2024-10-30 14:34:45 -04:00
use ui::Workspace;
2024-10-29 19:47:50 -04:00
mod ui;
2024-11-11 19:27:59 -05:00
mod book;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
pub struct Args {
#[arg()]
workbook: PathBuf,
2024-11-16 10:51:38 -05:00
#[arg(default_value_t=String::from("en"), short, long)]
locale_name: String,
#[arg(default_value_t=String::from("America/New_York"), short, long)]
timezone_name: String,
}
2024-11-16 10:51:38 -05:00
fn run(terminal: &mut ratatui::DefaultTerminal, args: Args) -> anyhow::Result<ExitCode> {
let mut ws = Workspace::load(&args.workbook, &args.locale_name, &args.timezone_name)?;
loop {
terminal.draw(|frame| ui::render::draw(frame, &mut ws))?;
if let Some(code) = ws.handle_input(event::read()?)? {
2024-10-30 14:34:45 -04:00
return Ok(code);
}
}
}
2024-10-30 14:34:45 -04:00
fn main() -> anyhow::Result<ExitCode> {
2024-10-29 19:47:50 -04:00
let args = Args::parse();
let mut terminal = ratatui::init();
terminal.clear()?;
2024-11-16 10:51:38 -05:00
let app_result = run(&mut terminal, args);
ratatui::restore();
app_result
2024-10-23 16:14:18 -04:00
}