Platform-specific config, cache, and data directory paths for MoonBit (XDG on Linux, conventions on macOS/Windows)
moon add moonrockz/directories// BaseDirs: user-level cache, config, data paths
match @directories.BaseDirs::new() {
Some(base) => {
base.home_dir() // e.g. /home/alice or C:\Users\alice
base.config_dir() // e.g. /home/alice/.config or %APPDATA%
base.cache_dir() // e.g. /home/alice/.cache or %LOCALAPPDATA%
}
None => () // HOME / USERPROFILE not set
}
// ProjectDirs: app-specific paths (qualifier, organization, application)
match @directories.ProjectDirs::from("com", "Foo Corp", "Bar App") {
Some(proj) => {
proj.config_dir() // Linux: .config/bar-app, macOS: Preferences/com.Foo-Corp.Bar-App, Windows: %APPDATA%\Foo Corp\Bar App
proj.cache_dir()
}
None => ()
}
// UserDirs: Desktop, Documents, Downloads, etc.
match @directories.UserDirs::new() {
Some(u) => u.download_dir()
None => ()
}@directories.path_sep() // "\\" on Windows, "/" on Unix
@directories.join(["home", "alice", ".config"]) // OS-native path
@directories.platform() // Platform::Windows | Linux | Darwin | Unknown
@directories.is_windows() // true on Windowspub struct BaseDirs {
home_dir : String
cache_dir : String
config_dir : String
config_local_dir : String
data_dir : String
data_local_dir : String
executable_dir : String?
preference_dir : String
runtime_dir : String?
state_dir : String?
}pub enum Platform {
Windows
Linux
Darwin
Unknown
}pub struct ProjectDirs {
project_path : String
cache_dir : String
config_dir : String
config_local_dir : String
data_dir : String
data_local_dir : String
preference_dir : String
runtime_dir : String?
state_dir : String?
}fn ProjectDirs::from(qualifier : String, organization : String, application : String) -> ProjectDirs?pub struct UserDirs {
home_dir : String
audio_dir : String?
desktop_dir : String?
document_dir : String?
download_dir : String?
font_dir : String?
picture_dir : String?
public_dir : String?
template_dir : String?
video_dir : String?
}fn is_windows() -> Boolfn path_sep() -> StringInstall
Download zipPlatform-specific config, cache, and data directory paths for MoonBit (XDG on Linux, conventions on macOS/Windows)