cuj-tui 0.1.0

cui — a read-only TUI browser for cuj vaults
Documentation
//! Thin entry point: config, vault, snapshot, terminal, loop.
//! Everything before terminal init errors onto a normal screen;
//! the run loop's error path restores the terminal before main
//! prints.

use std::process::ExitCode;

fn main() -> ExitCode {
    match run() {
        Ok(()) => ExitCode::SUCCESS,
        Err(e) => {
            eprintln!("cui: {e}");
            ExitCode::from(e.exit_code().clamp(1, 255) as u8)
        }
    }
}

fn run() -> cui::Result<()> {
    let client = cuj::ClientConfig::load()?;
    let app = cuj::App::open(client)?;
    let state = cui::state::AppState::new(app)?;
    let mut terminal = ratatui::init();
    let res = cui::run(&mut terminal, state);
    ratatui::restore();
    res
}