From e32e6f83ae4ee54093790fb21c2a9bc291270dbf Mon Sep 17 00:00:00 2001 From: suri-codes Date: Fri, 27 Mar 2026 15:46:09 -0700 Subject: [PATCH] refactor: move tui specific stuff into tui module --- src/config.rs | 2 +- src/main.rs | 11 +++-------- src/{ => tui}/app.rs | 4 ++-- src/{ => tui}/components/mod.rs | 5 ++++- src/{ => tui}/keymap.rs | 6 +++--- src/tui/mod.rs | 19 +++++++++++++++++++ src/{tui.rs => tui/raw_tui.rs} | 0 src/{ => tui}/signal.rs | 0 8 files changed, 32 insertions(+), 15 deletions(-) rename src/{ => tui}/app.rs (99%) rename src/{ => tui}/components/mod.rs (98%) rename src/{ => tui}/keymap.rs (97%) create mode 100644 src/tui/mod.rs rename src/{tui.rs => tui/raw_tui.rs} (100%) rename src/{ => tui}/signal.rs (100%) diff --git a/src/config.rs b/src/config.rs index 4fa7cc4..709143d 100644 --- a/src/config.rs +++ b/src/config.rs @@ -11,7 +11,7 @@ use std::{ sync::LazyLock, }; -use crate::keymap::KeyMap; +use crate::tui::KeyMap; /// Project Name: Filaments pub static PROJECT_NAME: LazyLock = diff --git a/src/main.rs b/src/main.rs index 8d47786..d1de927 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,17 +2,13 @@ //! My (suri.codes) personal-knowledge-system, with deeply integrated task tracking and long term goal planning capabilities. //! -use crate::{app::App, cli::Cli}; +use crate::{cli::Cli, tui::TuiApp}; use clap::Parser; -mod app; mod cli; -mod components; mod config; mod errors; -mod keymap; mod logging; -mod signal; mod tui; #[tokio::main] @@ -29,9 +25,8 @@ async fn main() -> color_eyre::Result<()> { } // if no command we run the app - - let mut app = App::new(args.tick_rate, args.frame_rate)?; - app.run().await?; + let mut tui = TuiApp::new(args.tick_rate, args.frame_rate)?; + tui.run().await?; Ok(()) } diff --git a/src/app.rs b/src/tui/app.rs similarity index 99% rename from src/app.rs rename to src/tui/app.rs index 1190f77..1cce508 100644 --- a/src/app.rs +++ b/src/tui/app.rs @@ -7,12 +7,12 @@ use tokio::sync::mpsc::{self, UnboundedReceiver, UnboundedSender}; use tracing::debug; use crate::{ - components::Component, config::Config, - signal::Signal, tui::{Event, Tui}, }; +use super::{components::Component, signal::Signal}; + pub struct App { config: Config, tick_rate: f64, diff --git a/src/components/mod.rs b/src/tui/components/mod.rs similarity index 98% rename from src/components/mod.rs rename to src/tui/components/mod.rs index ce84f4a..8ef8d7d 100644 --- a/src/components/mod.rs +++ b/src/tui/components/mod.rs @@ -5,7 +5,10 @@ use ratatui::{ }; use tokio::sync::mpsc::UnboundedSender; -use crate::{config::Config, signal::Signal, tui::Event}; +use crate::{ + config::Config, + tui::{Event, Signal}, +}; /// `Component` is a trait that represents a visual and interactive element of the user interface. /// diff --git a/src/keymap.rs b/src/tui/keymap.rs similarity index 97% rename from src/keymap.rs rename to src/tui/keymap.rs index 3d2aabb..fa003be 100644 --- a/src/keymap.rs +++ b/src/tui/keymap.rs @@ -7,7 +7,7 @@ use crossterm::event::{KeyCode, KeyEvent, KeyModifiers}; use kdl::KdlNode; use strum::IntoEnumIterator; -use crate::{app::Region, signal::Signal}; +use crate::tui::{Signal, app::Region}; #[derive(Debug, Clone)] pub struct KeyMap(pub HashMap, Signal>>); @@ -173,7 +173,7 @@ mod test { use crossterm::event::{KeyEvent, KeyModifiers}; use kdl::KdlNode; - use crate::{keymap::KeyMap, signal::Signal}; + use crate::tui::{KeyMap, Signal, app::Region}; #[test] fn test_quit_in_home_region() { @@ -193,7 +193,7 @@ mod test { let keymap: KeyMap = kdl.try_into().expect("Must be a valid keymap"); let map = keymap - .get(&crate::app::Region::Home) + .get(&Region::Home) .expect("Home region must exist in keymap"); let signal = map diff --git a/src/tui/mod.rs b/src/tui/mod.rs new file mode 100644 index 0000000..f911cab --- /dev/null +++ b/src/tui/mod.rs @@ -0,0 +1,19 @@ +/// The tui app +mod app; +pub use app::App as TuiApp; + +/// Tui components +mod components; + +/// Raw tui abstraction +mod raw_tui; +pub use raw_tui::Event; +pub use raw_tui::Tui; + +/// Keymap for mapping keybinds to regions +mod keymap; +pub use keymap::KeyMap; + +/// Singals for commands needing to be processed +mod signal; +pub use signal::Signal; diff --git a/src/tui.rs b/src/tui/raw_tui.rs similarity index 100% rename from src/tui.rs rename to src/tui/raw_tui.rs diff --git a/src/signal.rs b/src/tui/signal.rs similarity index 100% rename from src/signal.rs rename to src/tui/signal.rs -- 2.51.2