From df2e478aa694b3fd5b15e2ad46145bf83f50d031 Mon Sep 17 00:00:00 2001 From: Daniel Liu Date: Sun, 23 Apr 2023 21:17:41 +0900 Subject: [PATCH] logging implementation --- Cargo.lock | 1 + design/refactor.md | 7 +++++++ shrs/Cargo.toml | 2 ++ shrs/src/lib.rs | 2 ++ shrs/src/logger.rs | 31 +++++++++++++++++++++++++++++++ shrs_example/src/main.rs | 13 +++++++++---- 6 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 design/refactor.md create mode 100644 shrs/src/logger.rs diff --git a/Cargo.lock b/Cargo.lock index 6a351e64..a4e90ca9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -954,6 +954,7 @@ dependencies = [ "crossterm", "derive_builder", "lazy_static", + "log", "pino_deref", "regex", "rexpect", diff --git a/design/refactor.md b/design/refactor.md new file mode 100644 index 00000000..059eaa8b --- /dev/null +++ b/design/refactor.md @@ -0,0 +1,7 @@ + +# Refactoring Projects + +List of areas of the project that should be refactored/cleaned up +- Any code that involves handling `OsString` ends up looking very ugly +- DefaultCompletion code is very ugly + diff --git a/shrs/Cargo.toml b/shrs/Cargo.toml index bd477be4..07f36e1f 100644 --- a/shrs/Cargo.toml +++ b/shrs/Cargo.toml @@ -24,5 +24,7 @@ lazy_static = "1.4" shrs_line = { path = "../shrs_line" } shrs_lang = { path = "../shrs_lang" } +log = { version = "0.4", features = ["std"] } + [dev-dependencies] rexpect = "0.5" diff --git a/shrs/src/lib.rs b/shrs/src/lib.rs index 99e1b4e2..d8c1a016 100644 --- a/shrs/src/lib.rs +++ b/shrs/src/lib.rs @@ -38,6 +38,8 @@ mod state; mod jobs; +mod logger; + // TODO temp re-export anyhow pub use anyhow; diff --git a/shrs/src/logger.rs b/shrs/src/logger.rs new file mode 100644 index 00000000..8a3018dc --- /dev/null +++ b/shrs/src/logger.rs @@ -0,0 +1,31 @@ +//! Custom implementation of log facade +//! +//! + +use log::{Level, Log, Metadata, Record, SetLoggerError}; + +struct Logger {} + +impl Logger { + pub fn init(self) -> Result<(), SetLoggerError> { + log::set_boxed_logger(Box::new(self)) + } +} + +impl Log for Logger { + fn enabled(&self, metadata: &Metadata) -> bool { + true + } + + fn log(&self, record: &Record) { + match record.level() { + Level::Error => todo!(), + Level::Warn => todo!(), + Level::Info => todo!(), + Level::Debug => todo!(), + Level::Trace => todo!(), + } + } + + fn flush(&self) {} +} diff --git a/shrs_example/src/main.rs b/shrs_example/src/main.rs index e6914595..26860a00 100644 --- a/shrs_example/src/main.rs +++ b/shrs_example/src/main.rs @@ -22,10 +22,15 @@ struct MyPrompt; impl Prompt for MyPrompt { fn prompt_left(&self) -> String { - let path = top_pwd().white().bold(); - let username = username().unwrap_or_default().blue(); - let hostname = hostname().unwrap_or_default().blue(); - let prompt = ">".blue(); + // let path = top_pwd().white().bold(); + // let username = username().unwrap_or_default().blue(); + // let hostname = hostname().unwrap_or_default().blue(); + // let prompt = ">".blue(); + + let path = top_pwd(); + let username = username().unwrap_or_default(); + let hostname = hostname().unwrap_or_default(); + let prompt = ">"; format!("{hostname}@{username} {path} {prompt} ") } fn prompt_right(&self) -> String {