summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTim Oram <dev@mitmaro.ca>2021-06-20 11:16:16 -0230
committerTim Oram <dev@mitmaro.ca>2021-06-20 11:48:55 -0230
commit916ed944d2861ffbd134f0010445023842bcaeaf (patch)
treee00e275b46a2d78ac516320e2ac684675f1f0c5d /src
parentd31ead2da32c28700494622b12de0812a3266516 (diff)
Breakout the module system from the process module
This decouples the module system from the process module, this allows other modules to not depend on the process module, which really should not be depended on by the other modules.
Diffstat (limited to 'src')
-rw-r--r--src/components/choice/tests.rs2
-rw-r--r--src/components/help/tests.rs2
-rw-r--r--src/confirm_abort/mod.rs2
-rw-r--r--src/confirm_rebase/mod.rs2
-rw-r--r--src/core/arguments.rs2
-rw-r--r--src/core/exit.rs2
-rw-r--r--src/core/main.rs3
-rw-r--r--src/core/tests.rs2
-rw-r--r--src/error/mod.rs2
-rw-r--r--src/external_editor/mod.rs2
-rw-r--r--src/insert/mod.rs2
-rw-r--r--src/list/mod.rs2
-rw-r--r--src/main.rs1
-rw-r--r--src/module/exit_status.rs (renamed from src/process/exit_status.rs)0
-rw-r--r--src/module/mod.rs (renamed from src/process/module.rs)10
-rw-r--r--src/module/modules.rs (renamed from src/process/modules.rs)2
-rw-r--r--src/module/process_result.rs (renamed from src/process/process_result.rs)12
-rw-r--r--src/module/state.rs (renamed from src/process/state.rs)0
-rw-r--r--src/module/testutil/assert_process_result.rs (renamed from src/process/testutil/assert_process_result.rs)22
-rw-r--r--src/module/testutil/handle_event_test.rs (renamed from src/process/testutil/handle_event_test.rs)0
-rw-r--r--src/module/testutil/mod.rs4
-rw-r--r--src/process/mod.rs14
-rw-r--r--src/process/tests.rs1
-rw-r--r--src/process/testutil/mod.rs8
-rw-r--r--src/process/testutil/process_module_test.rs2
-rw-r--r--src/process/util.rs87
-rw-r--r--src/show_commit/mod.rs2
-rw-r--r--src/window_size_error/mod.rs2
28 files changed, 51 insertions, 141 deletions
diff --git a/src/components/choice/tests.rs b/src/components/choice/tests.rs
index 7a70b44..3b04bda 100644
--- a/src/components/choice/tests.rs
+++ b/src/components/choice/tests.rs
@@ -1,7 +1,7 @@
use rstest::rstest;
use super::*;
-use crate::{assert_rendered_output, input::MetaEvent, process::testutil::handle_event_test};
+use crate::{assert_rendered_output, input::MetaEvent, module::testutil::handle_event_test};
#[derive(Clone, Debug, PartialEq)]
pub enum TestAction {
diff --git a/src/components/help/tests.rs b/src/components/help/tests.rs
index adb262b..52c78fe 100644
--- a/src/components/help/tests.rs
+++ b/src/components/help/tests.rs
@@ -1,7 +1,7 @@
use rstest::rstest;
use super::*;
-use crate::{assert_rendered_output, input::MetaEvent, process::testutil::handle_event_test};
+use crate::{assert_rendered_output, input::MetaEvent, module::testutil::handle_event_test};
#[test]
fn empty() {
diff --git a/src/confirm_abort/mod.rs b/src/confirm_abort/mod.rs
index c9707ad..6f3b656 100644
--- a/src/confirm_abort/mod.rs
+++ b/src/confirm_abort/mod.rs
@@ -1,7 +1,7 @@
use crate::{
components::confirm::{Confirm, Confirmed},
input::EventHandler,
- process::{ExitStatus, Module, ProcessResult, State},
+ module::{ExitStatus, Module, ProcessResult, State},
todo_file::TodoFile,
view::{RenderContext, ViewData, ViewSender},
};
diff --git a/src/confirm_rebase/mod.rs b/src/confirm_rebase/mod.rs
index 3bbc92c..3fdc7b2 100644
--- a/src/confirm_rebase/mod.rs
+++ b/src/confirm_rebase/mod.rs
@@ -1,7 +1,7 @@
use crate::{
components::confirm::{Confirm, Confirmed},
input::EventHandler,
- process::{ExitStatus, Module, ProcessResult, State},
+ module::{ExitStatus, Module, ProcessResult, State},
todo_file::TodoFile,
view::{RenderContext, ViewData, ViewSender},
};
diff --git a/src/core/arguments.rs b/src/core/arguments.rs
index 57429a5..9157705 100644
--- a/src/core/arguments.rs
+++ b/src/core/arguments.rs
@@ -2,7 +2,7 @@ use std::{convert::TryFrom, ffi::OsString};
use pico_args::Arguments;
-use crate::{core::exit::Exit, process::ExitStatus};
+use crate::{core::exit::Exit, module::ExitStatus};
#[derive(Debug)]
pub enum Mode {
diff --git a/src/core/exit.rs b/src/core/exit.rs
index 2ff315e..d5ee210 100644
--- a/src/core/exit.rs
+++ b/src/core/exit.rs
@@ -1,4 +1,4 @@
-use crate::process::ExitStatus;
+use crate::module::ExitStatus;
#[derive(Debug, PartialEq)]
pub struct Exit {
diff --git a/src/core/main.rs b/src/core/main.rs
index 8d37bde..649a218 100644
--- a/src/core/main.rs
+++ b/src/core/main.rs
@@ -9,7 +9,8 @@ use crate::{
input::{EventHandler, KeyBindings},
insert::Insert,
list::List,
- process::{ExitStatus, Modules, Process, State},
+ module::{ExitStatus, Modules, State},
+ process::Process,
show_commit::ShowCommit,
todo_file::TodoFile,
view::View,
diff --git a/src/core/tests.rs b/src/core/tests.rs
index 5142b07..59bf95b 100644
--- a/src/core/tests.rs
+++ b/src/core/tests.rs
@@ -4,7 +4,7 @@ use super::*;
use crate::{
core::main::{load_config, load_todo_file, run_process},
input::{Event, EventHandler, KeyBindings, MetaEvent},
- process::ExitStatus,
+ module::ExitStatus,
};
fn set_git_directory(repo: &str) -> String {
diff --git a/src/error/mod.rs b/src/error/mod.rs
index ddd6f7b..113b5d8 100644
--- a/src/error/mod.rs
+++ b/src/error/mod.rs
@@ -3,7 +3,7 @@ use lazy_static::lazy_static;
use crate::{
display::DisplayColor,
input::{Event, EventHandler, InputOptions},
- process::{Module, ProcessResult, State},
+ module::{Module, ProcessResult, State},
todo_file::TodoFile,
view::{handle_view_data_scroll, LineSegment, RenderContext, ViewData, ViewLine, ViewSender},
};
diff --git a/src/external_editor/mod.rs b/src/external_editor/mod.rs
index 697333f..a6661b7 100644
--- a/src/external_editor/mod.rs
+++ b/src/external_editor/mod.rs
@@ -12,7 +12,7 @@ use crate::{
components::choice::Choice,
external_editor::{action::Action, argument_tokenizer::tokenize, external_editor_state::ExternalEditorState},
input::{Event, EventHandler, InputOptions, MetaEvent},
- process::{ExitStatus, Module, ProcessResult, State},
+ module::{ExitStatus, Module, ProcessResult, State},
todo_file::{Line, TodoFile},
view::{RenderContext, ViewData, ViewLine, ViewSender},
};
diff --git a/src/insert/mod.rs b/src/insert/mod.rs
index e78f3d4..324c417 100644
--- a/src/insert/mod.rs
+++ b/src/insert/mod.rs
@@ -8,7 +8,7 @@ use crate::{
components::{choice::Choice, edit::Edit},
input::EventHandler,
insert::{insert_state::InsertState, line_type::LineType},
- process::{Module, ProcessResult, State},
+ module::{Module, ProcessResult, State},
todo_file::{Line, TodoFile},
view::{RenderContext, ViewData, ViewLine, ViewSender},
};
diff --git a/src/list/mod.rs b/src/list/mod.rs
index 075b5f2..3b666bb 100644
--- a/src/list/mod.rs
+++ b/src/list/mod.rs
@@ -15,7 +15,7 @@ use crate::{
input::get_event,
utils::{get_list_normal_mode_help_lines, get_list_visual_mode_help_lines, get_todo_line_segments},
},
- process::{ExitStatus, Module, ProcessResult, State},
+ module::{ExitStatus, Module, ProcessResult, State},
todo_file::{Action, EditContext, Line, TodoFile},
view::{LineSegment, RenderContext, ViewData, ViewLine, ViewSender},
};
diff --git a/src/main.rs b/src/main.rs
index bf187c5..c204604 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -45,6 +45,7 @@ mod external_editor;
mod input;
mod insert;
mod list;
+mod module;
mod process;
mod show_commit;
mod todo_file;
diff --git a/src/process/exit_status.rs b/src/module/exit_status.rs
index a4b4f20..a4b4f20 100644
--- a/src/process/exit_status.rs
+++ b/src/module/exit_status.rs
diff --git a/src/process/module.rs b/src/module/mod.rs
index b46adf7..495de7c 100644
--- a/src/process/module.rs
+++ b/src/module/mod.rs
@@ -1,12 +1,20 @@
+mod exit_status;
+mod modules;
+mod process_result;
+mod state;
+
use anyhow::Error;
+pub use self::{exit_status::ExitStatus, modules::Modules, process_result::ProcessResult, state::State};
use crate::{
input::EventHandler,
- process::{ProcessResult, State},
todo_file::TodoFile,
view::{RenderContext, ViewData, ViewSender},
};
+#[cfg(test)]
+pub mod testutil;
+
pub trait Module {
fn activate(&mut self, _rebase_todo: &TodoFile, _previous_state: State) -> ProcessResult {
ProcessResult::new()
diff --git a/src/process/modules.rs b/src/module/modules.rs
index 6dd01d5..d2bb036 100644
--- a/src/process/modules.rs
+++ b/src/module/modules.rs
@@ -1,8 +1,8 @@
use std::collections::HashMap;
+use super::{Module, ProcessResult, State};
use crate::{
input::EventHandler,
- process::{module::Module, process_result::ProcessResult, state::State},
todo_file::TodoFile,
view::{RenderContext, ViewData, ViewSender},
};
diff --git a/src/process/process_result.rs b/src/module/process_result.rs
index c45be70..6840ad3 100644
--- a/src/process/process_result.rs
+++ b/src/module/process_result.rs
@@ -2,16 +2,16 @@ use anyhow::Error;
use crate::{
input::Event,
- process::{ExitStatus, State},
+ module::{ExitStatus, State},
};
#[derive(Debug)]
pub struct ProcessResult {
- pub(super) error: Option<Error>,
- pub(super) exit_status: Option<ExitStatus>,
- pub(super) event: Option<Event>,
- pub(super) state: Option<State>,
- pub(super) external_command: Option<(String, Vec<String>)>,
+ pub(crate) error: Option<Error>,
+ pub(crate) exit_status: Option<ExitStatus>,
+ pub(crate) event: Option<Event>,
+ pub(crate) state: Option<State>,
+ pub(crate) external_command: Option<(String, Vec<String>)>,
}
impl ProcessResult {
diff --git a/src/process/state.rs b/src/module/state.rs
index 6355dac..6355dac 100644
--- a/src/process/state.rs
+++ b/src/module/state.rs
diff --git a/src/process/testutil/assert_process_result.rs b/src/module/testutil/assert_process_result.rs
index e5436ff..59df554 100644
--- a/src/process/testutil/assert_process_result.rs
+++ b/src/module/testutil/assert_process_result.rs
@@ -2,7 +2,7 @@ use anyhow::Error;
use crate::{
input::Event,
- process::{exit_status::ExitStatus, process_result::ProcessResult, state::State},
+ module::{ExitStatus, ProcessResult, State},
};
fn format_process_result(
@@ -106,16 +106,16 @@ pub fn _assert_process_result(
#[macro_export]
macro_rules! assert_process_result {
($actual:expr) => {
- crate::process::testutil::_assert_process_result(&$actual, None, None, None, &None, &None)
+ crate::module::testutil::_assert_process_result(&$actual, None, None, None, &None, &None)
};
($actual:expr, error = $error:expr, exit_status = $exit_status:expr) => {
- crate::process::testutil::_assert_process_result(&$actual, None, None, Some($exit_status), &Some($error), &None)
+ crate::module::testutil::_assert_process_result(&$actual, None, None, Some($exit_status), &Some($error), &None)
};
($actual:expr, state = $state:expr) => {
- crate::process::testutil::_assert_process_result(&$actual, None, Some($state), None, &None, &None)
+ crate::module::testutil::_assert_process_result(&$actual, None, Some($state), None, &None, &None)
};
($actual:expr, state = $state:expr, external_command = $external_command:expr) => {
- crate::process::testutil::_assert_process_result(
+ crate::module::testutil::_assert_process_result(
&$actual,
None,
Some($state),
@@ -125,19 +125,19 @@ macro_rules! assert_process_result {
)
};
($actual:expr, state = $state:expr, error = $error:expr) => {
- crate::process::testutil::_assert_process_result(&$actual, None, Some($state), None, &Some($error), &None)
+ crate::module::testutil::_assert_process_result(&$actual, None, Some($state), None, &Some($error), &None)
};
($actual:expr, event = $event:expr) => {
- crate::process::testutil::_assert_process_result(&$actual, Some($event), None, None, &None, &None)
+ crate::module::testutil::_assert_process_result(&$actual, Some($event), None, None, &None, &None)
};
($actual:expr, event = $event:expr, state = $state:expr) => {
- crate::process::testutil::_assert_process_result(&$actual, Some($event), Some($state), None, &None, &None)
+ crate::module::testutil::_assert_process_result(&$actual, Some($event), Some($state), None, &None, &None)
};
($actual:expr, event = $event:expr, exit_status = $exit_status:expr) => {
- crate::process::testutil::_assert_process_result(&$actual, Some($event), None, Some($exit_status), &None, &None)
+ crate::module::testutil::_assert_process_result(&$actual, Some($event), None, Some($exit_status), &None, &None)
};
($actual:expr, event = $event:expr, external_command = $external_command:expr) => {
- crate::process::testutil::_assert_process_result(
+ crate::module::testutil::_assert_process_result(
&$actual,
Some($event),
None,
@@ -148,6 +148,6 @@ macro_rules! assert_process_result {
};
($actual:expr, external_command = $external_command:expr) => {
- crate::process::testutil::_assert_process_result(&$actual, None, None, None, &None, &Some($external_command))
+ crate::module::testutil::_assert_process_result(&$actual, None, None, None, &None, &Some($external_command))
};
}
diff --git a/src/process/testutil/handle_event_test.rs b/src/module/testutil/handle_event_test.rs
index 268570e..268570e 100644
--- a/src/process/testutil/handle_event_test.rs
+++ b/src/module/testutil/handle_event_test.rs
diff --git a/src/module/testutil/mod.rs b/src/module/testutil/mod.rs
new file mode 100644
index 0000000..74aaea7
--- /dev/null
+++ b/src/module/testutil/mod.rs
@@ -0,0 +1,4 @@
+mod assert_process_result;
+mod handle_event_test;
+
+pub use self::{assert_process_result::_assert_process_result, handle_event_test::handle_event_test};
diff --git a/src/process/mod.rs b/src/process/mod.rs
index c278c7b..ef39be9 100644
--- a/src/process/mod.rs
+++ b/src/process/mod.rs
@@ -1,9 +1,3 @@
-mod exit_status;
-mod module;
-mod modules;
-mod process_result;
-mod state;
-
#[cfg(test)]
mod tests;
#[cfg(test)]
@@ -13,16 +7,10 @@ use std::{process::Command, thread};
use anyhow::{anyhow, Result};
-pub use self::{
- exit_status::ExitStatus,
- module::Module,
- modules::Modules,
- process_result::ProcessResult,
- state::State,
-};
use crate::{
display::Tui,
input::{Event, EventHandler, MetaEvent},
+ module::{ExitStatus, Modules, ProcessResult, State},
todo_file::TodoFile,
view::{spawn_view_thread, RenderContext, View, ViewSender},
};
diff --git a/src/process/tests.rs b/src/process/tests.rs
index 1378eb6..dfe531a 100644
--- a/src/process/tests.rs
+++ b/src/process/tests.rs
@@ -8,6 +8,7 @@ use crate::{
display::{testutil::CrossTerm, Display, Size},
error::Error,
input::InputOptions,
+ module::Module,
process::testutil::process_module_test,
view::ViewData,
window_size_error::WindowSizeError,
diff --git a/src/process/testutil/mod.rs b/src/process/testutil/mod.rs
index 0288d33..2852719 100644
--- a/src/process/testutil/mod.rs
+++ b/src/process/testutil/mod.rs
@@ -1,9 +1,3 @@
-mod assert_process_result;
-mod handle_event_test;
mod process_module_test;
-pub use self::{
- assert_process_result::_assert_process_result,
- handle_event_test::handle_event_test,
- process_module_test::process_module_test,
-};
+pub use self::process_module_test::process_module_test;
diff --git a/src/process/testutil/process_module_test.rs b/src/process/testutil/process_module_test.rs
index 87d7052..e97f1c8 100644
--- a/src/process/testutil/process_module_test.rs
+++ b/src/process/testutil/process_module_test.rs
@@ -8,7 +8,7 @@ use crate::{
testutil::{with_event_handler, TestContext as EventHandlerTestContext},
Event,
},
- process::{module::Module, process_result::ProcessResult, state::State},
+ module::{Module, ProcessResult, State},
todo_file::{Line, TodoFile},
view::{
testutil::{with_view_sender, TestContext as ViewSenderContext},
diff --git a/src/process/util.rs b/src/process/util.rs
deleted file mode 100644
index 195765c..0000000
--- a/src/process/util.rs
+++ /dev/null
@@ -1,87 +0,0 @@
-use crate::{input::Input, view::view_data::ViewData};
-
-pub fn handle_view_data_scroll(input: Input, view_data: &mut ViewData) -> Option<Input> {
- match input {
- Input::MoveCursorLeft | Input::ScrollLeft => view_data.scroll_left(),
- Input::MoveCursorRight | Input::ScrollRight => view_data.scroll_right(),
- Input::MoveCursorDown | Input::ScrollDown => view_data.scroll_down(),
- Input::MoveCursorUp | Input::ScrollUp => view_data.scroll_up(),
- Input::MoveCursorPageDown | Input::ScrollJumpDown => view_data.page_down(),
- Input::MoveCursorPageUp | Input::ScrollJumpUp => view_data.page_up(),
- _ => return None,
- }
- Some(input)
-}
-
-#[cfg(test)]
-mod tests {
- use rstest::rstest;
-
- use super::*;
- use crate::{assert_rendered_output, view::view_line::ViewLine};
-
- #[rstest(
- input,
- result,
- case::move_cursor_left(Input::MoveCursorLeft, "12345"),
- case::scroll_left(Input::ScrollLeft, "12345"),
- case::move_cursor_right(Input::MoveCursorRight, "34567"),
- case::scroll_right(Input::ScrollRight, "34567")
- )]
- fn handle_view_data_scroll_horizontal(input: Input, result: &str) {
- let mut view_data = ViewData::new();
- view_data.push_line(ViewLine::from("012345678"));
- view_data.set_view_size(5, 10);
- view_data.scroll_right();
- view_data.scroll_right();
- assert_eq!(handle_view_data_scroll(input, &mut view_data), Some(input));
- assert_rendered_output!(&mut view_data, "{BODY}", format!("{{Normal}}{}", result));
- }
-
- #[rstest(
- input,
- result,
- case::move_cursor_down(Input::MoveCursorDown, ["3", "4", "5", "6"]),
- case::scroll_down(Input::ScrollDown, ["3", "4", "5", "6"]),
- case::move_cursor_up(Input::MoveCursorUp, ["1", "2", "3", "4"]),
- case::scroll_up(Input::ScrollUp, ["1", "2", "3", "4"]),
- case::move_cursor_page_down(Input::MoveCursorPageDown, ["4", "5", "6", "7"]),
- case::jump_down(Input::ScrollJumpDown, ["4", "5", "6", "7"]),
- case::move_cursor_page_up(Input::MoveCursorPageUp, ["0", "1", "2", "3"]),
- case::jump_up(Input::ScrollJumpUp, ["0", "1", "2", "3"]),
- )]
- fn handle_view_data_scroll_vertical(input: Input, result: [&str; 4]) {
- let mut view_data = ViewData::new();
- view_data.push_line(ViewLine::from("0"));
- view_data.push_line(ViewLine::from("1"));
- view_data.push_line(ViewLine::from("2"));
- view_data.push_line(ViewLine::from("3"));
- view_data.push_line(ViewLine::from("4"));
- view_data.push_line(ViewLine::from("5"));
- view_data.push_line(ViewLine::from("6"));
- view_data.push_line(ViewLine::from("7"));
- view_data.push_line(ViewLine::from("8"));
- view_data.push_line(ViewLine::from("9"));
- view_data.set_view_size(10, 4);
- view_data.scroll_down();
- view_data.scroll_down();
- assert_eq!(handle_view_data_scroll(input, &mut view_data), Some(input));
- assert_rendered_output!(
- &mut view_data,
- "{BODY}",
- format!("{{Normal}}{}", result[0]),
- format!("{{Normal}}{}", result[1]),
- format!("{{Normal}}{}", result[2]),
- format!("{{Normal}}{}", result[3])
- );
- }
-
- #[test]
- fn handle_view_data_scroll_other_input() {
- let mut view_data = ViewData::new();
- view_data.push_line(ViewLine::from("012345678"));
- view_data.set_view_size(5, 10);
- assert_eq!(handle_view_data_scroll(Event::from('a'), &mut view_data), None);
- assert_rendered_output!(&mut view_data, "{BODY}", "{Normal}01234");
- }
-}
diff --git a/src/show_commit/mod.rs b/src/show_commit/mod.rs
index 36a0630..ecbe7a4 100644
--- a/src/show_commit/mod.rs
+++ b/src/show_commit/mod.rs
@@ -20,7 +20,7 @@ use crate::{
components::help::Help,
config::{Config, DiffIgnoreWhitespaceSetting, DiffShowWhitespaceSetting},
input::{Event, EventHandler, InputOptions, MetaEvent},
- process::{Module, ProcessResult, State},
+ module::{Module, ProcessResult, State},
show_commit::{
commit::{Commit, LoadCommitDiffOptions},
show_commit_state::ShowCommitState,
diff --git a/src/window_size_error/mod.rs b/src/window_size_error/mod.rs
index 60833b6..54e94a1 100644
--- a/src/window_size_error/mod.rs
+++ b/src/window_size_error/mod.rs
@@ -2,7 +2,7 @@ use lazy_static::lazy_static;
use crate::{
input::{Event, EventHandler, InputOptions},
- process::{Module, ProcessResult, State},
+ module::{Module, ProcessResult, State},
todo_file::TodoFile,
view::{RenderContext, ViewData, ViewLine, ViewSender},
};