Skip to main content

folk_plugin_process/
config.rs

1use std::time::Duration;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6#[serde(rename_all = "snake_case")]
7pub enum RestartPolicy {
8    Always,
9    OnFailure,
10    Never,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct ProcessDef {
15    pub name: String,
16    pub command: String,
17    pub restart: RestartPolicy,
18    pub max_restarts: u32,
19    #[serde(with = "humantime_serde")]
20    pub restart_delay: Duration,
21}
22
23impl Default for ProcessDef {
24    fn default() -> Self {
25        Self {
26            name: "unnamed".into(),
27            command: "true".into(),
28            restart: RestartPolicy::OnFailure,
29            max_restarts: 5,
30            restart_delay: Duration::from_secs(1),
31        }
32    }
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize, Default)]
36pub struct ProcessConfig {
37    pub processes: Vec<ProcessDef>,
38}