1use crate::daemon_status::DaemonStatus;
2use crate::pitchfork_toml::CronRetrigger;
3use std::fmt::Display;
4use std::path::PathBuf;
5
6#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7pub struct Daemon {
8 pub id: String,
9 pub title: Option<String>,
10 pub pid: Option<u32>,
11 pub shell_pid: Option<u32>,
12 pub status: DaemonStatus,
13 pub dir: Option<PathBuf>,
14 pub autostop: bool,
15 #[serde(skip_serializing_if = "Option::is_none", default)]
16 pub cron_schedule: Option<String>,
17 #[serde(skip_serializing_if = "Option::is_none", default)]
18 pub cron_retrigger: Option<CronRetrigger>,
19 #[serde(skip_serializing_if = "Option::is_none", default)]
20 pub last_exit_success: Option<bool>,
21 #[serde(default)]
22 pub retry: u32,
23 #[serde(default)]
24 pub retry_count: u32,
25 #[serde(skip_serializing_if = "Option::is_none", default)]
26 pub ready_delay: Option<u64>,
27 #[serde(skip_serializing_if = "Option::is_none", default)]
28 pub ready_output: Option<String>,
29}
30
31#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
32pub struct RunOptions {
33 pub id: String,
34 pub cmd: Vec<String>,
35 pub force: bool,
36 pub shell_pid: Option<u32>,
37 pub dir: PathBuf,
38 pub autostop: bool,
39 pub cron_schedule: Option<String>,
40 pub cron_retrigger: Option<CronRetrigger>,
41 pub retry: u32,
42 pub retry_count: u32,
43 pub ready_delay: Option<u64>,
44 pub ready_output: Option<String>,
45 pub wait_ready: bool,
46}
47
48impl Display for Daemon {
49 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
50 write!(f, "{}", self.id)
51 }
52}