malvin 0.2.4

Non-interactive research and coding agent
use std::path::PathBuf;
use std::sync::{Mutex, PoisonError};

static STDOUT_LOG_PATH: Mutex<Option<PathBuf>> = Mutex::new(None);

pub fn set_stdout_log_path(path: Option<PathBuf>) {
    *STDOUT_LOG_PATH
        .lock()
        .unwrap_or_else(PoisonError::into_inner) = path;
}

#[must_use]
pub fn clone_stdout_log_path() -> Option<PathBuf> {
    STDOUT_LOG_PATH
        .lock()
        .unwrap_or_else(PoisonError::into_inner)
        .clone()
}

#[cfg(test)]
mod kiss_coverage {
    #[test]
    fn smoke_set_stdout_log_path_and_clone_stdout_log_path() {
        let tmp = tempfile::tempdir().expect("tempdir");
        let path = tmp.path().join("out.log");
        super::set_stdout_log_path(Some(path.clone()));
        assert_eq!(super::clone_stdout_log_path(), Some(path));
        super::set_stdout_log_path(None);
        assert!(super::clone_stdout_log_path().is_none());
        let _ = super::set_stdout_log_path;
        let _ = super::clone_stdout_log_path;
    }
}