summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Oram <dev@mitmaro.ca>2019-06-18 20:43:42 -0230
committerTim Oram <dev@mitmaro.ca>2019-06-18 20:48:46 -0230
commit1694baefcaacff55333aef0ba20922f946efb07a (patch)
tree1a211d2b5c8cabbf450e9fa8f88fb4def8bf8592
parent9d30b910870aa8cac4d45b585c6f652be64d600f (diff)
Move confirm abort to module
-rw-r--r--src/application.rs37
-rw-r--r--src/confirm_abort/confirm_abort.rs39
-rw-r--r--src/confirm_abort/mod.rs4
-rw-r--r--src/main.rs1
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;