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    #[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}