mxl_base/
misc.rs

1use std::sync::OnceLock;
2
3pub fn init(
4    qualifier: &'static str,
5    organization: &'static str,
6    app_name: &'static str,
7    binary_name: &'static str,
8    version: &'static str,
9) {
10    crate::about::about_init(qualifier, organization, app_name, binary_name, version);
11    crate::localization::init();
12}
13
14pub fn project_dirs() -> &'static directories::ProjectDirs {
15    static PROJECT_DIR: OnceLock<directories::ProjectDirs> = OnceLock::new();
16    PROJECT_DIR.get_or_init(|| {
17        let about = super::about::about();
18        if let Some(dir) = directories::ProjectDirs::from(about.qualifier, about.organization, about.app_name) {
19            dir
20        } else {
21            panic!("Cannot determine project directories")
22        }
23    })
24}
25
26pub fn user_dirs() -> &'static directories::UserDirs {
27    static PROJECT_DIR: OnceLock<directories::UserDirs> = OnceLock::new();
28    PROJECT_DIR.get_or_init(|| {
29        if let Some(dir) = directories::UserDirs::new() {
30            dir
31        } else {
32            panic!("Cannot determine user directories")
33        }
34    })
35}