1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
#![warn(missing_docs)]
//! *Put your app's data in the right place on every platform*
//! # Usage
//! ```
//! extern crate app_dirs;
//! use app_dirs::*;
//!
//! const APP_INFO: AppInfo = AppInfo{name: "CoolApp", author: "SuperDev"};
//!
//! fn main () {
//! // Where should I store my app's per-user configuration data?
//! println!("{:?}", get_app_root(AppDataType::UserConfig, &APP_INFO));
//! // Windows: "%APPDATA%\SuperDev\CoolApp"
//! // (e.g.: "C:\Users\Rusty\AppData\Roaming\SuperDev\CoolApp")
//! // macOS: "$HOME/Library/Application Support/CoolApp"
//! // (e.g.: "/Users/Rusty/Library/Application Support/CoolApp")
//! // *nix: "$HOME/.config/CoolApp" (or "$XDG_CONFIG_HOME/CoolApp", if defined)
//! // (e.g.: "/home/rusty/.config/CoolApp")
//!
//! // How about nested cache data?
//! println!("{:?}", get_app_dir(AppDataType::UserCache, &APP_INFO, "cache/images"));
//! // Windows: "%LOCALAPPDATA%\SuperDev\CoolApp\cache\images"
//! // (e.g.: "C:\Users\Rusty\AppData\Local\SuperDev\CoolApp\cache\images")
//! // macOS: "$HOME/Library/Caches/CoolApp/cache/images"
//! // (e.g.: "/Users/Rusty/Library/Caches/CoolApp/cache/images")
//! // *nix: "$HOME/.cache/CoolApp/cache/images"
//! // (or "$XDG_CACHE_HOME/CoolApp/cache/images", if defined)
//! // (e.g.: "/home/rusty/.cache/CoolApp/cache/images")
//!
//! // Remove "get_" prefix to recursively create nonexistent directories:
//! // app_root(AppDataType::UserConfig, &APP_INFO)
//! // app_dir(AppDataType::UserCache, &APP_INFO, "cache/images")
//! }
//! ```
mod common;
pub use common::*;
mod imp;
pub use imp::*;
mod utils;
pub use utils::*;
#[cfg(test)]
mod tests {
use AppDataType::*;
use super::*;
#[test]
fn it_works() {
let info = AppInfo {
name: "Awesome App".into(),
author: "Dedicated Dev".into(),
};
let path = "/.not-hidden/subfolder!/with?/uni.code/¡Olé!/";
let types = [UserConfig, UserData, UserCache, SharedData, SharedConfig];
for &t in types.iter() {
println!("{:?} data root = {:?}", t, get_data_root(t));
println!("{:?} app root = {:?}", t, get_app_root(t, &info));
println!("{:?} data dir = {:?}", t, get_app_dir(t, &info, &path));
}
}
}