use std::time::Duration;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum RestartPolicy {
Always,
OnFailure,
Never,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProcessDef {
pub name: String,
pub command: String,
pub restart: RestartPolicy,
pub max_restarts: u32,
#[serde(with = "humantime_serde")]
pub restart_delay: Duration,
}
impl Default for ProcessDef {
fn default() -> Self {
Self {
name: "unnamed".into(),
command: "true".into(),
restart: RestartPolicy::OnFailure,
max_restarts: 5,
restart_delay: Duration::from_secs(1),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ProcessConfig {
pub processes: Vec<ProcessDef>,
}