proc-heim 0.1.5

Library for running and managing short-lived and long-lived processes using asynchronous API
Documentation
use std::path::PathBuf;

use crate::process::ProcessId;

#[derive(Clone, Debug)]
pub(crate) struct WorkingDir {
    dir: PathBuf,
}

impl WorkingDir {
    pub(crate) fn new(dir: PathBuf) -> Self {
        Self { dir }
    }

    pub(crate) fn process_dir(&self, id: &ProcessId) -> PathBuf {
        self.dir.join(id.to_string())
    }

    pub(crate) fn process_data_dir(&self, id: &ProcessId) -> PathBuf {
        self.process_dir(id).join("data")
    }

    pub(crate) fn message_writer_pipe(&self, id: &ProcessId) -> PathBuf {
        self.process_dir(id).join("writer_pipe")
    }

    pub(crate) fn message_reader_pipe(&self, id: &ProcessId) -> PathBuf {
        self.process_dir(id).join("reader_pipe")
    }

    pub(crate) fn logs_stdout(&self, id: &ProcessId) -> PathBuf {
        self.process_dir(id).join("stdout_logs")
    }

    pub(crate) fn logs_stderr(&self, id: &ProcessId) -> PathBuf {
        self.process_dir(id).join("stderr_logs")
    }

    pub(crate) fn logs_merged(&self, id: &ProcessId) -> PathBuf {
        self.process_dir(id).join("logs")
    }
}