1pub mod images;
2pub mod index;
3
4pub use index::Cinic10Index;
5
6use std::env;
7use std::path::PathBuf;
8use std::sync::RwLock;
9
10static STATIC_DEFAULT_PATH: RwLock<Option<PathBuf>> = RwLock::new(None);
11pub const CINC10_PATH_ENV_VAR: &str = "CINIC10_PATH";
12
13pub fn get_default_data_path() -> Option<PathBuf> {
19 let path = STATIC_DEFAULT_PATH.read().unwrap().clone();
20 if path.is_some() {
21 return path;
22 }
23
24 match env::var(CINC10_PATH_ENV_VAR) {
25 Ok(path) => Some(PathBuf::from(path)),
26 Err(_) => None,
27 }
28}
29
30pub fn default_data_path_or_panic() -> PathBuf {
31 get_default_data_path().unwrap_or_else(|| {
32 panic!(
33 "CINIC-10 data path not set. \
34 Set the {CINC10_PATH_ENV_VAR} environment variable or call set_default_data_path()"
35 )
36 })
37}
38
39pub fn set_default_data_path(path: Option<PathBuf>) {
41 *STATIC_DEFAULT_PATH.write().unwrap() = path;
42}