wormhole_common/
util.rs

1use std::{
2    fs, io,
3    path::{Path, PathBuf},
4};
5
6pub fn copy_dir_all(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> io::Result<()> {
7    fs::create_dir_all(&dst)?;
8
9    for entry in fs::read_dir(src)? {
10        let entry = entry?;
11        let ty = entry.file_type()?;
12
13        if ty.is_dir() {
14            copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?;
15        } else {
16            fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?;
17        }
18    }
19
20    Ok(())
21}
22
23#[cfg(target_os = "windows")]
24pub fn get_platform_data_dir() -> String {
25    return std::env::var("APPDATA").unwrap();
26}
27
28#[cfg(target_os = "linux")]
29pub fn get_platform_data_dir() -> String {
30    return std::env::var("HOME").unwrap() + "/.local/share";
31}
32
33#[cfg(target_os = "macos")]
34pub fn get_platform_data_dir() -> String {
35    return std::env::var("HOME").unwrap() + "/Library/Application Support";
36}
37
38pub fn get_data_dir() -> PathBuf {
39    return PathBuf::from(get_platform_data_dir()).join("Wormhole");
40}