snip_cli/helpers/
expand_home_dir.rs

1use dirs_next::home_dir;
2use std::path::PathBuf;
3
4pub fn expand_home_dir(path: &str) -> PathBuf {
5    if path.starts_with("~") {
6        if let Some(mut home) = home_dir() {
7            home.push(&path[2..]);
8            home
9        } else {
10            // Fallback: use a temporary directory or another suitable default
11            PathBuf::from("/tmp/snip.json")
12        }
13    } else {
14        PathBuf::from(path)
15    }
16}
17
18#[cfg(test)]
19mod tests {
20    use super::*;
21
22    #[test]
23    fn test_expand_home_dir() {
24        let home = home_dir().unwrap();
25        assert_eq!(
26            expand_home_dir("~/test"),
27            home.join("test"),
28            "Failed to expand home directory"
29        );
30        assert_eq!(
31            expand_home_dir("/test"),
32            PathBuf::from("/test"),
33            "Failed to expand home directory"
34        );
35    }
36
37    #[test]
38    fn test_providing_pull_path_on_expand_home_dir() {
39        assert_eq!(
40            expand_home_dir("/Users/uriah/Code/rustacean/src"),
41            PathBuf::from("/Users/uriah/Code/rustacean/src"),
42            "Failed to expand home directory"
43        )
44    }
45}