mirror of
https://github.com/zaphar/sheetsui.git
synced 2025-07-23 05:19: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
|
/target
|
||||||
result/
|
result/
|
||||||
|
*.json
|
||||||
|
9
Cargo.lock
generated
9
Cargo.lock
generated
@ -193,6 +193,9 @@ name = "bitflags"
|
|||||||
version = "2.6.0"
|
version = "2.6.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "block-buffer"
|
name = "block-buffer"
|
||||||
@ -428,6 +431,7 @@ dependencies = [
|
|||||||
"mio",
|
"mio",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"rustix",
|
"rustix",
|
||||||
|
"serde",
|
||||||
"signal-hook",
|
"signal-hook",
|
||||||
"signal-hook-mio",
|
"signal-hook-mio",
|
||||||
"winapi",
|
"winapi",
|
||||||
@ -1441,9 +1445,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.132"
|
version = "1.0.133"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"
|
checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"memchr",
|
"memchr",
|
||||||
@ -1484,6 +1488,7 @@ dependencies = [
|
|||||||
"futures",
|
"futures",
|
||||||
"ironcalc",
|
"ironcalc",
|
||||||
"ratatui",
|
"ratatui",
|
||||||
|
"serde_json",
|
||||||
"slice-utils",
|
"slice-utils",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tui-popup",
|
"tui-popup",
|
||||||
|
@ -8,7 +8,7 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = { version = "1.0.91", features = ["backtrace"] }
|
anyhow = { version = "1.0.91", features = ["backtrace"] }
|
||||||
clap = { version = "4.5.20", features = ["derive"] }
|
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"
|
csvx = "0.1.17"
|
||||||
ironcalc = { git = "https://github.com/ironcalc/IronCalc" }
|
ironcalc = { git = "https://github.com/ironcalc/IronCalc" }
|
||||||
futures = "0.3.31"
|
futures = "0.3.31"
|
||||||
@ -18,3 +18,4 @@ tui-textarea = "0.7.0"
|
|||||||
tui-prompts = "0.5.0"
|
tui-prompts = "0.5.0"
|
||||||
slice-utils = { git = "https://dev.zaphar.net/zaphar/slice-cursor-rs.git", ref = "main" }
|
slice-utils = { git = "https://dev.zaphar.net/zaphar/slice-cursor-rs.git", ref = "main" }
|
||||||
tui-popup = "0.6.0"
|
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 clap::Parser;
|
||||||
use crossterm::event;
|
use crossterm::event;
|
||||||
use ratatui;
|
use ratatui;
|
||||||
|
use serde_json::to_writer;
|
||||||
|
use std::io::Write;
|
||||||
|
|
||||||
use ui::Workspace;
|
use ui::Workspace;
|
||||||
|
|
||||||
mod book;
|
mod book;
|
||||||
@ -17,14 +20,33 @@ pub struct Args {
|
|||||||
locale_name: String,
|
locale_name: String,
|
||||||
#[arg(default_value_t=String::from("America/New_York"), short, long)]
|
#[arg(default_value_t=String::from("America/New_York"), short, long)]
|
||||||
timezone_name: String,
|
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> {
|
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 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 {
|
loop {
|
||||||
terminal.draw(|frame| ui::render::draw(frame, &mut ws))?;
|
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);
|
return Ok(code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user