git_revise/revise/
status.rs1use std::fmt::Formatter;
2
3#[derive(Clone, Default, Debug)]
4pub enum Status {
5 #[default]
6 Submit,
7 Abort,
8 Edit,
9}
10
11impl std::fmt::Display for Status {
12 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13 let s = match self {
14 Self::Submit => "Submit",
15 Self::Abort => "Abort",
16 Self::Edit => "Edit",
17 };
18 write!(f, "{s}")
19 }
20}
21
22impl std::str::FromStr for Status {
23 type Err = anyhow::Error;
24
25 fn from_str(s: &str) -> Result<Self, Self::Err> {
26 match s.to_lowercase().trim() {
27 "y" | "yes" | "" => Ok(Self::Submit),
28 "n" | "no" => Ok(Self::Abort),
29 "e" | "edit" => Ok(Self::Edit),
30 &_ => Err(anyhow::anyhow!("input error")),
31 }
32 }
33}