folk_plugin_process/
config.rs1use 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}