electron_hook/
paths.rs

1//! Path utilities
2
3fn cache_dir() -> std::path::PathBuf {
4    dirs::cache_dir()
5        .expect("Failed to get cache directory")
6        .join("electron-hook")
7}
8
9fn asar_cache_dir() -> std::path::PathBuf {
10    ensure_dir(cache_dir().join("asar"))
11}
12
13/// The path to a specific .asar file
14pub fn asar_cache_path(asar_id: &str) -> std::path::PathBuf {
15    asar_cache_dir().join(format!("{asar_id}.asar"))
16}
17
18fn mod_artifacts_dir() -> std::path::PathBuf {
19    ensure_dir(cache_dir().join("mods"))
20}
21
22/// The path to a specific mod artifact folder
23pub fn mod_artifact_dir(mod_name: &str) -> std::path::PathBuf {
24    mod_artifacts_dir().join(mod_name)
25}
26
27fn data_dir() -> std::path::PathBuf {
28    dirs::data_dir()
29        .expect("Failed to get data directory")
30        .join("electron-hook")
31}
32
33fn data_profiles_dir() -> std::path::PathBuf {
34    ensure_dir(data_dir().join("profiles"))
35}
36
37/// The path to a specific profile directory
38pub fn data_profile_dir(profile_id: &str) -> std::path::PathBuf {
39    data_profiles_dir().join(profile_id)
40}
41
42/// Ensure a directory exists, recursively creating it if it doesn't
43pub fn ensure_dir(path: std::path::PathBuf) -> std::path::PathBuf {
44    if !path.exists() {
45        std::fs::create_dir_all(&path)
46            .map_err(|e| format!("Failed to create directory: {e}"))
47            .unwrap();
48    }
49    path
50}