git_revise/
revise.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
pub mod prompts;
pub mod status;
pub mod template;

use inquire::InquireError;
use status::Status;
use template::Template;

use crate::{cli::ReviseCommands, error::ReviseResult, git::GitUtils};

#[derive(Default, Debug)]
pub struct Revise {
    pub template: Template,
    pub status: Status,
    pub message: String,
}

impl Revise {
    pub async fn run(
        &mut self,
        cmd: Option<ReviseCommands>,
    ) -> ReviseResult<()> {
        match self.template.run(&cmd).await {
            Ok(msg) => GitUtils::new().commit(&msg),
            Err(err) => {
                if let Some(
                    InquireError::OperationCanceled
                    | InquireError::OperationInterrupted,
                ) = err.downcast_ref()
                {
                    Ok(())
                } else {
                    Err(err)
                }
            }
        }
    }
}