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 #[serde(skip_serializing_if = "Option::is_none", default)]
30 pub ready_http: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none", default)]
32 pub ready_port: Option<u16>,
33}
34
35#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
36pub struct RunOptions {
37 pub id: String,
38 pub cmd: Vec<String>,
39 pub force: bool,
40 pub shell_pid: Option<u32>,
41 pub dir: PathBuf,
42 pub autostop: bool,
43 pub cron_schedule: Option<String>,
44 pub cron_retrigger: Option<CronRetrigger>,
45 pub retry: u32,
46 pub retry_count: u32,
47 pub ready_delay: Option<u64>,
48 pub ready_output: Option<String>,
49 pub ready_http: Option<String>,
50 pub ready_port: Option<u16>,
51 pub wait_ready: bool,
52}
53
54impl Display for Daemon {
55 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
56 write!(f, "{}", self.id)
57 }
58}