mxl_base/
misc.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use once_cell::sync::OnceCell;

pub fn init(
    qualifier: &'static str,
    organization: &'static str,
    app_name: &'static str,
    binary_name: &'static str,
    version: &'static str,
) {
    crate::about::about_init(qualifier, organization, app_name, binary_name, version);
    crate::localization::init();
}

pub fn project_dirs() -> &'static directories::ProjectDirs {
    static PROJECT_DIR: OnceCell<directories::ProjectDirs> = OnceCell::new();
    PROJECT_DIR.get_or_init(|| {
        let about = super::about::about();
        if let Some(dir) = directories::ProjectDirs::from(about.qualifier, about.organization, about.app_name) {
            dir
        } else {
            panic!("Cannot determine project directories")
        }
    })
}