diff options
Diffstat (limited to 'src/confirm_rebase/mod.rs')
-rw-r--r-- | src/confirm_rebase/mod.rs | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/src/confirm_rebase/mod.rs b/src/confirm_rebase/mod.rs index d737016..b0d46d9 100644 --- a/src/confirm_rebase/mod.rs +++ b/src/confirm_rebase/mod.rs @@ -1,4 +1,43 @@ -#[allow(clippy::module_inception)] -mod confirm_rebase; +use crate::git_interactive::GitInteractive; +use crate::input::input_handler::InputHandler; +use crate::input::Input; +use crate::process::exit_status::ExitStatus; +use crate::process::handle_input_result::{HandleInputResult, HandleInputResultBuilder}; +use crate::process::process_module::ProcessModule; +use crate::process::state::State; +use crate::view::View; -pub use self::confirm_rebase::ConfirmRebase; +pub(crate) struct ConfirmRebase {} + +impl ProcessModule for ConfirmRebase { + fn handle_input( + &mut self, + input_handler: &InputHandler, + _git_interactive: &mut GitInteractive, + _view: &View, + ) -> HandleInputResult + { + let input = input_handler.get_confirm(); + let mut result = HandleInputResultBuilder::new(input); + match input { + Input::Yes => { + result = result.exit_status(ExitStatus::Good).state(State::Exiting); + }, + Input::No => { + result = result.state(State::List(false)); + }, + _ => {}, + } + result.build() + } + + fn render(&self, view: &View, _git_interactive: &GitInteractive) { + view.draw_confirm("Are you sure you want to rebase"); + } +} + +impl ConfirmRebase { + pub(crate) fn new() -> Self { + Self {} + } +} |