Skip to main content

syspulse_core/
paths.rs

1use std::path::PathBuf;
2
3pub fn data_dir() -> PathBuf {
4    if let Ok(dir) = std::env::var("SYSPULSE_DATA_DIR") {
5        return PathBuf::from(dir);
6    }
7    #[cfg(unix)]
8    {
9        dirs::home_dir().unwrap_or_default().join(".syspulse")
10    }
11    #[cfg(windows)]
12    {
13        dirs::data_local_dir().unwrap_or_default().join("syspulse")
14    }
15}
16
17pub fn db_path() -> PathBuf {
18    data_dir().join("syspulse.db")
19}
20
21pub fn logs_dir() -> PathBuf {
22    data_dir().join("logs")
23}
24
25pub fn daemon_log_dir(name: &str) -> PathBuf {
26    logs_dir().join(name)
27}
28
29pub fn socket_path() -> PathBuf {
30    #[cfg(unix)]
31    {
32        data_dir().join("syspulse.sock")
33    }
34    #[cfg(windows)]
35    {
36        PathBuf::from(r"\\.\pipe\syspulse")
37    }
38}
39
40pub fn pid_path() -> PathBuf {
41    data_dir().join("syspulse.pid")
42}
43
44pub fn ensure_dirs() -> std::io::Result<()> {
45    std::fs::create_dir_all(data_dir())?;
46    std::fs::create_dir_all(logs_dir())?;
47    Ok(())
48}