use crate::dirs::system::apple_shared::{
get_macos_dir, get_macos_dir_fail_if_sandbox, NS_APPLICATION_SUPPORT_DIRECTORY,
NS_CACHES_DIRECTORY, NS_DOCUMENT_DIRECTORY, NS_DOWNLOADS_DIRECTORY, NS_LIBRARY_DIRECTORY,
NS_USER_DIRECTORY,
};
use std::path::PathBuf;
pub fn get_app_cache() -> Option<PathBuf> {
get_macos_dir(NS_CACHES_DIRECTORY).map(PathBuf::from)
}
pub fn get_app_config() -> Option<PathBuf> {
get_macos_dir(NS_LIBRARY_DIRECTORY).map(|path| PathBuf::from(path).join("Preferences"))
}
pub fn get_app_data() -> Option<PathBuf> {
get_macos_dir(NS_APPLICATION_SUPPORT_DIRECTORY).map(PathBuf::from)
}
pub fn get_app_logs() -> Option<PathBuf> {
get_macos_dir(NS_LIBRARY_DIRECTORY).map(|path| PathBuf::from(path).join("Logs"))
}
pub fn get_app_documents() -> Option<PathBuf> {
if let Some(dir) = get_macos_dir(NS_DOCUMENT_DIRECTORY) {
if dir.contains("Library/Containers/") {
Some(PathBuf::from(dir))
} else {
None
}
} else {
None
}
}
pub fn get_user_home() -> Option<PathBuf> {
get_macos_dir(NS_USER_DIRECTORY).map(PathBuf::from)
}
pub fn get_user_documents() -> Option<PathBuf> {
get_macos_dir_fail_if_sandbox(NS_DOCUMENT_DIRECTORY)
}
pub fn get_user_downloads() -> Option<PathBuf> {
get_macos_dir_fail_if_sandbox(NS_DOWNLOADS_DIRECTORY)
}