diff options
author | Tim Oram <dev@mitmaro.ca> | 2019-06-18 20:43:42 -0230 |
---|---|---|
committer | Tim Oram <dev@mitmaro.ca> | 2019-06-18 20:48:46 -0230 |
commit | 1694baefcaacff55333aef0ba20922f946efb07a (patch) | |
tree | 1a211d2b5c8cabbf450e9fa8f88fb4def8bf8592 | |
parent | 9d30b910870aa8cac4d45b585c6f652be64d600f (diff) |
Move confirm abort to module
-rw-r--r-- | src/application.rs | 37 | ||||
-rw-r--r-- | src/confirm_abort/confirm_abort.rs | 39 | ||||
-rw-r--r-- | src/confirm_abort/mod.rs | 4 | ||||
-rw-r--r-- | src/main.rs | 1 |
4 files changed, 55 insertions, 26 deletions
diff --git a/src/application.rs b/src/application.rs index 63b2c37..a65f1ee 100644 --- a/src/application.rs +++ b/src/application.rs @@ -2,6 +2,7 @@ use crate::action::Action; use crate::git_interactive::GitInteractive; use crate::config::Config; +use crate::confirm_abort::ConfirmAbort; use crate::constants::{LIST_HELP_LINES, VISUAL_MODE_HELP_LINES}; use crate::edit::Edit; use crate::input::{Input, InputHandler}; @@ -23,6 +24,7 @@ use std::process::ExitStatus as ProcessExitStatus; pub struct Application<'a> { config: &'a Config, + confirm_abort: ConfirmAbort, edit: Edit, git_interactive: GitInteractive, input_handler: &'a InputHandler<'a>, @@ -40,6 +42,7 @@ impl<'a> Application<'a> { { Self { config, + confirm_abort: ConfirmAbort::new(), edit: Edit::new(), git_interactive, input_handler, @@ -54,7 +57,7 @@ impl<'a> Application<'a> { pub fn activate(&mut self, state: State) { match state { - State::ConfirmAbort => {}, + State::ConfirmAbort => self.confirm_abort.activate(state, &self.git_interactive), State::ConfirmRebase => {}, State::Edit => self.edit.activate(state, &self.git_interactive), State::Error { .. } => {}, @@ -72,7 +75,7 @@ impl<'a> Application<'a> { pub fn deactivate(&mut self, state: State) { match state { - State::ConfirmAbort => {}, + State::ConfirmAbort => self.confirm_abort.deactivate(), State::ConfirmRebase => {}, State::Edit => self.edit.deactivate(), State::Error { .. } => {}, @@ -90,7 +93,7 @@ impl<'a> Application<'a> { pub fn process(&mut self, state: State) -> ProcessResult { match state { - State::ConfirmAbort => ProcessResult::new(), + State::ConfirmAbort => self.confirm_abort.process(&mut self.git_interactive), State::ConfirmRebase => ProcessResult::new(), State::Edit => self.edit.process(&mut self.git_interactive), State::Error { .. } => ProcessResult::new(), @@ -162,7 +165,7 @@ impl<'a> Application<'a> { pub fn render(&self, state: State) { self.view.clear(); match state { - State::ConfirmAbort => self.draw_confirm_abort(), + State::ConfirmAbort => self.confirm_abort.render(&self.view, &self.git_interactive), State::ConfirmRebase => self.draw_confirm_rebase(), State::Edit => self.edit.render(&self.view, &self.git_interactive), State::Error { message, .. } => self.draw_error(message.as_str()), @@ -179,10 +182,6 @@ impl<'a> Application<'a> { self.view.refresh() } - fn draw_confirm_abort(&self) { - self.view.draw_confirm("Are you sure you want to abort"); - } - fn draw_confirm_rebase(&self) { self.view.draw_confirm("Are you sure you want to rebase"); } @@ -233,7 +232,10 @@ impl<'a> Application<'a> { pub fn handle_input(&mut self, state: State) -> HandleInputResult { match state { - State::ConfirmAbort => self.handle_confirm_abort_input(), + State::ConfirmAbort => { + self.confirm_abort + .handle_input(self.input_handler, &mut self.git_interactive) + }, State::ConfirmRebase => self.handle_confirm_rebase_input(), State::Edit => self.edit.handle_input(&self.input_handler, &mut self.git_interactive), State::Error { return_state, .. } => self.handle_error_input(return_state.borrow()), @@ -314,23 +316,6 @@ impl<'a> Application<'a> { result.build() } - fn handle_confirm_abort_input(&mut self) -> HandleInputResult { - let input = self.get_confirm(); - let mut result = HandleInputResultBuilder::new(input); - match input { - Input::Yes => { - self.git_interactive.clear(); - result = result.exit_status(ExitStatus::Good).state(State::Exiting); - }, - Input::No => { - result = result.state(State::List); - }, - _ => {}, - } - - result.build() - } - fn handle_confirm_rebase_input(&mut self) -> HandleInputResult { let input = self.get_confirm(); let mut result = HandleInputResultBuilder::new(input); diff --git a/src/confirm_abort/confirm_abort.rs b/src/confirm_abort/confirm_abort.rs new file mode 100644 index 0000000..0caa8c9 --- /dev/null +++ b/src/confirm_abort/confirm_abort.rs @@ -0,0 +1,39 @@ +use crate::git_interactive::GitInteractive; +use crate::input::{Input, InputHandler}; +use crate::process::{ExitStatus, HandleInputResult, HandleInputResultBuilder, ProcessModule, State}; +use crate::view::View; + +pub struct ConfirmAbort {} + +impl ProcessModule for ConfirmAbort { + fn handle_input( + &mut self, + input_handler: &InputHandler, + git_interactive: &mut GitInteractive, + ) -> HandleInputResult + { + let input = input_handler.get_confirm(); + let mut result = HandleInputResultBuilder::new(input); + match input { + Input::Yes => { + git_interactive.clear(); + result = result.exit_status(ExitStatus::Good).state(State::Exiting); + }, + Input::No => { + result = result.state(State::List); + }, + _ => {}, + } + result.build() + } + + fn render(&self, view: &View, _git_interactive: &GitInteractive) { + view.draw_confirm("Are you sure you want to abort"); + } +} + +impl ConfirmAbort { + pub fn new() -> Self { + Self {} + } +} diff --git a/src/confirm_abort/mod.rs b/src/confirm_abort/mod.rs new file mode 100644 index 0000000..b91f7bc --- /dev/null +++ b/src/confirm_abort/mod.rs @@ -0,0 +1,4 @@ +#[allow(clippy::module_inception)] +mod confirm_abort; + +pub use self::confirm_abort::ConfirmAbort; diff --git a/src/main.rs b/src/main.rs index 07919cd..a7bcc7c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ mod cli; mod color; mod commit; mod config; +mod confirm_abort; mod constants; mod edit; mod git_interactive; |