syspulse-core 0.1.2

Core library for syspulse daemon manager
Documentation
use std::path::PathBuf;

pub fn data_dir() -> PathBuf {
    if let Ok(dir) = std::env::var("SYSPULSE_DATA_DIR") {
        return PathBuf::from(dir);
    }
    #[cfg(unix)]
    {
        dirs::home_dir().unwrap_or_default().join(".syspulse")
    }
    #[cfg(windows)]
    {
        dirs::data_local_dir().unwrap_or_default().join("syspulse")
    }
}

pub fn db_path() -> PathBuf {
    data_dir().join("syspulse.db")
}

pub fn logs_dir() -> PathBuf {
    data_dir().join("logs")
}

pub fn daemon_log_dir(name: &str) -> PathBuf {
    logs_dir().join(name)
}

pub fn socket_path() -> PathBuf {
    #[cfg(unix)]
    {
        data_dir().join("syspulse.sock")
    }
    #[cfg(windows)]
    {
        PathBuf::from(r"\\.\pipe\syspulse")
    }
}

pub fn pid_path() -> PathBuf {
    data_dir().join("syspulse.pid")
}

pub fn ensure_dirs() -> std::io::Result<()> {
    std::fs::create_dir_all(data_dir())?;
    std::fs::create_dir_all(logs_dir())?;
    Ok(())
}