Skip to main content

huddle_core/
config.rs

1use std::path::PathBuf;
2
3pub fn data_dir() -> PathBuf {
4    let base = dirs::data_dir().unwrap_or_else(|| PathBuf::from("."));
5    base.join("huddle")
6}
7
8pub fn db_path() -> PathBuf {
9    data_dir().join("huddle.db")
10}
11
12pub fn identity_key_path() -> PathBuf {
13    data_dir().join("identity.key")
14}
15
16pub fn log_path() -> PathBuf {
17    data_dir().join("huddle.log")
18}
19
20pub fn ensure_data_dir() -> std::io::Result<()> {
21    std::fs::create_dir_all(data_dir())
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27
28    #[test]
29    fn data_dir_is_inside_huddle_directory() {
30        let dir = data_dir();
31        assert!(dir.ends_with("huddle") || dir.to_string_lossy().contains("huddle"));
32    }
33
34    #[test]
35    fn db_path_ends_with_huddle_db() {
36        let path = db_path();
37        assert_eq!(path.file_name().unwrap(), "huddle.db");
38    }
39
40    #[test]
41    fn identity_path_ends_with_identity_key() {
42        let path = identity_key_path();
43        assert_eq!(path.file_name().unwrap(), "identity.key");
44    }
45}