From f1d6921353c537b85fdaf9098c025d013734e9e3 Mon Sep 17 00:00:00 2001 From: Stephan Dilly Date: Fri, 20 Mar 2020 18:28:42 +0100 Subject: [PATCH] support logging --- Cargo.lock | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 + src/app.rs | 3 + src/main.rs | 19 +++++- 4 files changed, 197 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index f40f06ed..d8c9ceae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,18 +6,47 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" + [[package]] name = "autocfg" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +[[package]] +name = "blake2b_simd" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + [[package]] name = "cassowary" version = "0.3.0" @@ -39,6 +68,17 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "chrono" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2" +dependencies = [ + "num-integer", + "num-traits", + "time", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -48,6 +88,23 @@ dependencies = [ "bitflags", ] +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if", + "lazy_static", +] + [[package]] name = "crossterm" version = "0.14.2" @@ -98,6 +155,28 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "dirs" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" +dependencies = [ + "cfg-if", + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" +dependencies = [ + "cfg-if", + "libc", + "redox_users", + "winapi 0.3.8", +] + [[package]] name = "either" version = "1.5.3" @@ -120,6 +199,17 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +[[package]] +name = "getrandom" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + [[package]] name = "git2" version = "0.10.2" @@ -140,8 +230,11 @@ name = "gitui" version = "0.1.0" dependencies = [ "crossterm 0.15.0", + "dirs", "git2", "itertools 0.9.0", + "log", + "simplelog", "tui", ] @@ -320,6 +413,25 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "num-integer" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" +dependencies = [ + "autocfg", +] + [[package]] name = "openssl-probe" version = "0.1.2" @@ -381,6 +493,29 @@ version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +[[package]] +name = "redox_users" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" +dependencies = [ + "getrandom", + "redox_syscall", + "rust-argon2", +] + +[[package]] +name = "rust-argon2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" +dependencies = [ + "base64", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", +] + [[package]] name = "scopeguard" version = "1.1.0" @@ -408,6 +543,17 @@ dependencies = [ "libc", ] +[[package]] +name = "simplelog" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05a3e303ace6adb0a60a9e9e2fbc6a33e1749d1e43587e2125f7efa9c5e107c5" +dependencies = [ + "chrono", + "log", + "term", +] + [[package]] name = "slab" version = "0.4.2" @@ -420,6 +566,27 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" +[[package]] +name = "term" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0863a3345e70f61d613eab32ee046ccd1bcc5f9105fe402c61fcd0c13eeb8b5" +dependencies = [ + "dirs", + "winapi 0.3.8", +] + +[[package]] +name = "time" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" +dependencies = [ + "libc", + "redox_syscall", + "winapi 0.3.8", +] + [[package]] name = "tui" version = "0.8.0" @@ -483,6 +650,12 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "winapi" version = "0.2.8" diff --git a/Cargo.toml b/Cargo.toml index 6c1e92ed..d2955ee8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,4 +11,7 @@ edition = "2018" git2 = "0.10" crossterm = "0.15" itertools = "0.9" +log = "0.4" +simplelog = "0.7" +dirs = "2.0" tui = { version = "0.8", default-features = false, features = ['crossterm'] } \ No newline at end of file diff --git a/src/app.rs b/src/app.rs index bb204529..47384ca4 100644 --- a/src/app.rs +++ b/src/app.rs @@ -9,6 +9,7 @@ use crate::{ use crossterm::event::Event; use git2::StatusShow; use itertools::Itertools; +use log::trace; use std::{borrow::Cow, path::Path}; use tui::{ backend::Backend, @@ -136,6 +137,7 @@ impl App { /// pub fn event(&mut self, ev: Event) { + trace!("event: {:?}", ev); if self.commit.event(ev) { return; } @@ -189,6 +191,7 @@ impl App { /// pub fn update(&mut self) { + trace!("update"); self.index.update(); self.index_wd.update(); self.update_diff(); diff --git a/src/main.rs b/src/main.rs index 69927e69..08567415 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,10 +18,12 @@ use crossterm::{ }, ExecutableCommand, Result, }; -use std::io; +use simplelog::*; +use std::{env, fs, fs::File, io}; use tui::{backend::CrosstermBackend, Terminal}; fn main() -> Result<()> { + setup_logging(); enable_raw_mode()?; io::stdout() .execute(EnterAlternateScreen)? @@ -60,3 +62,18 @@ fn main() -> Result<()> { disable_raw_mode()?; Ok(()) } + +fn setup_logging() { + if env::var("GITUI_LOGGING").is_ok() { + let mut path = dirs::home_dir().unwrap(); + path.push(".gitui"); + path.push("gitui.log"); + fs::create_dir(path.parent().unwrap()).unwrap_or_default(); + + let _ = WriteLogger::init( + LevelFilter::Trace, + Config::default(), + File::create(path).unwrap(), + ); + } +}