folk-plugin-process 0.2.0

Auxiliary process supervisor plugin for Folk — starts, monitors, and restarts sidecar processes
Documentation
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>,
}