Mountain/IPC/WindServiceHandlers/Utilities/UserdataDir/
Ensure.rs1use crate::dev_log;
5
6pub fn Fn() {
7 if super::INITIALIZED.swap(true, std::sync::atomic::Ordering::Relaxed) {
8 return;
9 }
10
11 let Base = super::Get::Fn();
12
13 let Dirs = [
14 format!("{}/User", Base),
15 format!("{}/User/globalStorage", Base),
16 format!("{}/User/profiles/__default__profile__", Base),
17 format!("{}/User/snippets", Base),
18 format!("{}/User/prompts", Base),
19 format!("{}/User/cacheHome", Base),
20 format!("{}/logs", Base),
21 format!("{}/User/workspaceStorage", Base),
22 format!(
23 "{}/CachedConfigurations/defaults/__default__profile__-configurationDefaultsOverrides",
24 Base
25 ),
26 ];
27
28 for Dir in &Dirs {
29 if let Err(E) = std::fs::create_dir_all(Dir) {
30 dev_log!("lifecycle", "Failed to create userdata dir {}: {}", Dir, E);
31 }
32 }
33
34 let DefaultFiles = [
35 (format!("{}/User/settings.json", Base), "{}"),
36 (format!("{}/User/keybindings.json", Base), "[]"),
37 (format!("{}/User/tasks.json", Base), "{}"),
38 (format!("{}/User/extensions.json", Base), "[]"),
39 (format!("{}/User/mcp.json", Base), "{}"),
40 ];
41
42 for (FilePath, DefaultContent) in &DefaultFiles {
43 if !std::path::Path::new(FilePath).exists() {
44 if let Err(E) = std::fs::write(FilePath, DefaultContent) {
45 dev_log!("lifecycle", "Failed to create default file {}: {}", FilePath, E);
46 }
47 }
48 }
49
50 dev_log!("lifecycle", "userdata dirs initialized at: {}/User/", Base);
51}