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}