pitchfork_cli/
daemon_status.rs1#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, strum::Display, strum::EnumIs)]
2#[strum(serialize_all = "snake_case")]
3#[serde(rename_all = "snake_case")]
4pub enum DaemonStatus {
5 Failed(String),
6 Waiting,
7 Running,
8 Stopping,
9 Errored(Option<i32>),
10 Stopped,
11}
12
13impl DaemonStatus {
14 pub fn style(&self) -> String {
15 let s = self.to_string();
16 match self {
17 DaemonStatus::Failed(_) => console::style(s).red().to_string(),
18 DaemonStatus::Waiting => console::style(s).yellow().to_string(),
19 DaemonStatus::Running => console::style(s).green().to_string(),
20 DaemonStatus::Stopping => console::style(s).yellow().to_string(),
21 DaemonStatus::Stopped => console::style(s).dim().to_string(),
22 DaemonStatus::Errored(_) => console::style(s).red().to_string(),
23 }
24 }
25
26 pub fn error_message(&self) -> Option<String> {
27 match self {
28 DaemonStatus::Failed(msg) => Some(msg.clone()),
29 DaemonStatus::Errored(Some(code)) => Some(format!("exit code {code}")),
30 DaemonStatus::Errored(None) => Some("unknown exit code".to_string()),
31 _ => None,
32 }
33 }
34}