mirror of
https://github.com/zaphar/sheetsui.git
synced 2025-07-22 04:39:48 -04:00
feat: log input for debugging purposes
This commit is contained in:
parent
ee1b46b835
commit
be4e56bba6
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
/target
|
||||
result/
|
||||
*.json
|
||||
|
9
Cargo.lock
generated
9
Cargo.lock
generated
@ -193,6 +193,9 @@ name = "bitflags"
|
||||
version = "2.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
@ -428,6 +431,7 @@ dependencies = [
|
||||
"mio",
|
||||
"parking_lot",
|
||||
"rustix",
|
||||
"serde",
|
||||
"signal-hook",
|
||||
"signal-hook-mio",
|
||||
"winapi",
|
||||
@ -1441,9 +1445,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.132"
|
||||
version = "1.0.133"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"
|
||||
checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
@ -1484,6 +1488,7 @@ dependencies = [
|
||||
"futures",
|
||||
"ironcalc",
|
||||
"ratatui",
|
||||
"serde_json",
|
||||
"slice-utils",
|
||||
"thiserror",
|
||||
"tui-popup",
|
||||
|
@ -8,7 +8,7 @@ edition = "2021"
|
||||
[dependencies]
|
||||
anyhow = { version = "1.0.91", features = ["backtrace"] }
|
||||
clap = { version = "4.5.20", features = ["derive"] }
|
||||
crossterm = { version = "0.28.1", features = ["event-stream"] }
|
||||
crossterm = { version = "0.28.1", features = ["event-stream", "serde"] }
|
||||
csvx = "0.1.17"
|
||||
ironcalc = { git = "https://github.com/ironcalc/IronCalc" }
|
||||
futures = "0.3.31"
|
||||
@ -18,3 +18,4 @@ tui-textarea = "0.7.0"
|
||||
tui-prompts = "0.5.0"
|
||||
slice-utils = { git = "https://dev.zaphar.net/zaphar/slice-cursor-rs.git", ref = "main" }
|
||||
tui-popup = "0.6.0"
|
||||
serde_json = "1.0.133"
|
||||
|
26
src/main.rs
26
src/main.rs
@ -3,6 +3,9 @@ use std::{path::PathBuf, process::ExitCode};
|
||||
use clap::Parser;
|
||||
use crossterm::event;
|
||||
use ratatui;
|
||||
use serde_json::to_writer;
|
||||
use std::io::Write;
|
||||
|
||||
use ui::Workspace;
|
||||
|
||||
mod book;
|
||||
@ -17,14 +20,33 @@ pub struct Args {
|
||||
locale_name: String,
|
||||
#[arg(default_value_t=String::from("America/New_York"), short, long)]
|
||||
timezone_name: String,
|
||||
#[arg(long)]
|
||||
log_input: Option<PathBuf>,
|
||||
}
|
||||
|
||||
type ReadFn = Box<dyn FnMut() -> anyhow::Result<event::Event>>;
|
||||
|
||||
fn run(terminal: &mut ratatui::DefaultTerminal, args: Args) -> anyhow::Result<ExitCode> {
|
||||
let mut ws = Workspace::load(&args.workbook, &args.locale_name, &args.timezone_name)?;
|
||||
|
||||
let mut read_func: ReadFn = if let Some(log_path) = args.log_input {
|
||||
{
|
||||
let log_file = std::fs::File::create(log_path)?;
|
||||
Box::new(move || {
|
||||
let evt = event::read()?;
|
||||
to_writer(&log_file, &evt)?;
|
||||
writeln!(&log_file, "")?;
|
||||
Ok(evt)
|
||||
})
|
||||
}
|
||||
} else {
|
||||
Box::new(|| {
|
||||
let evt = event::read()?;
|
||||
Ok(evt)
|
||||
})
|
||||
};
|
||||
loop {
|
||||
terminal.draw(|frame| ui::render::draw(frame, &mut ws))?;
|
||||
if let Some(code) = ws.handle_input(event::read()?)? {
|
||||
if let Some(code) = ws.handle_input(read_func()?)? {
|
||||
return Ok(code);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user