prehnite_core/util/
app_global.rs

1#![doc = "アプリのグローバルな定数等"]
2use crate::env::ENV_KEY_GLOBAL_DIR_PATH;
3use crate::util::alert::fatal_init_db_error;
4use std::path::PathBuf;
5use tracing::error;
6use tracing_unwrap::ResultExt;
7
8const DEFAULT_APP_DIR_NAME: &str = ".jp.prehnite.prehnite";
9
10#[tracing::instrument]
11/// アプリディレクトリのパスを取得します。
12pub fn global_dir() -> PathBuf {
13    std::env::var_os(ENV_KEY_GLOBAL_DIR_PATH)
14        .map(|v| v.into())
15        .unwrap_or_else(|| {
16            if cfg!(debug_assertions) {
17                ".".into()
18            } else {
19                let mut path = std::env::home_dir().unwrap_or_else(|| {
20                    error!("Failed to get home_dir. The home directory may not be set.");
21                    fatal_init_db_error().show().unwrap_or_log();
22                    panic!();
23                });
24                path.push(DEFAULT_APP_DIR_NAME);
25                path
26            }
27        })
28}