bijux-dag-app 0.4.1

Application orchestration and response-shaping layer for Bijux DAG command surfaces.
Documentation
use std::path::{Path, PathBuf};

pub(crate) fn node_trace_path(run_dir: &Path, node_id: &str) -> PathBuf {
    run_dir.join("nodes").join(node_id).join("trace.json")
}

pub(crate) fn node_outputs_index_path(run_dir: &Path, node_id: &str) -> PathBuf {
    run_dir.join("nodes").join(node_id).join("outputs").join("index.json")
}

pub(crate) fn node_inputs_index_path(run_dir: &Path, node_id: &str) -> PathBuf {
    run_dir.join("nodes").join(node_id).join("inputs").join("index.json")
}

pub(crate) fn node_resolved_params_path(run_dir: &Path, node_id: &str) -> PathBuf {
    run_dir.join("nodes").join(node_id).join("resolved_params.json")
}

pub(crate) fn node_attempts_path(run_dir: &Path, node_id: &str) -> PathBuf {
    run_dir.join("nodes").join(node_id).join("attempts.json")
}

pub(crate) fn node_stdout_path(run_dir: &Path, node_id: &str) -> PathBuf {
    run_dir.join("nodes").join(node_id).join("stdout.log")
}

pub(crate) fn node_stderr_path(run_dir: &Path, node_id: &str) -> PathBuf {
    run_dir.join("nodes").join(node_id).join("stderr.log")
}

pub(crate) fn manifest_path(run_dir: &Path) -> PathBuf {
    run_dir.join("manifest.json")
}

#[cfg(test)]
mod tests {
    use super::{
        manifest_path, node_attempts_path, node_inputs_index_path, node_outputs_index_path,
        node_resolved_params_path, node_stderr_path, node_stdout_path, node_trace_path,
    };
    use std::path::Path;

    #[test]
    fn resolves_node_paths() {
        let run_dir = Path::new("/runs/r1");
        assert_eq!(node_trace_path(run_dir, "n1"), Path::new("/runs/r1/nodes/n1/trace.json"));
        assert_eq!(
            node_inputs_index_path(run_dir, "n1"),
            Path::new("/runs/r1/nodes/n1/inputs/index.json")
        );
        assert_eq!(
            node_outputs_index_path(run_dir, "n1"),
            Path::new("/runs/r1/nodes/n1/outputs/index.json")
        );
        assert_eq!(
            node_resolved_params_path(run_dir, "n1"),
            Path::new("/runs/r1/nodes/n1/resolved_params.json")
        );
        assert_eq!(node_attempts_path(run_dir, "n1"), Path::new("/runs/r1/nodes/n1/attempts.json"));
        assert_eq!(node_stdout_path(run_dir, "n1"), Path::new("/runs/r1/nodes/n1/stdout.log"));
        assert_eq!(node_stderr_path(run_dir, "n1"), Path::new("/runs/r1/nodes/n1/stderr.log"));
    }

    #[test]
    fn resolves_manifest_path() {
        assert_eq!(manifest_path(Path::new("/runs/r2")), Path::new("/runs/r2/manifest.json"));
    }
}