pitchfork_cli/
daemon.rs

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}