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}