diff options
Diffstat (limited to 'base/src/lib.rs')
-rw-r--r-- | base/src/lib.rs | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/base/src/lib.rs b/base/src/lib.rs index b90934e..385ad7a 100644 --- a/base/src/lib.rs +++ b/base/src/lib.rs @@ -11,11 +11,25 @@ pub mod federation; pub mod permission; use jellycommon::config::{GlobalConfig, SecretsConfig}; -use std::{fs::File, sync::LazyLock}; +use std::sync::{ + atomic::{AtomicBool, Ordering}, + LazyLock, +}; -pub static CONF: LazyLock<GlobalConfig> = LazyLock::new(|| { +pub static CONF: LazyLock<GlobalConfig> = LazyLock::new(load_config); +pub static SECRETS: LazyLock<SecretsConfig> = LazyLock::new(load_secrets); +pub static USE_TEST: AtomicBool = AtomicBool::new(false); + +pub fn use_test_config() { + USE_TEST.store(true, Ordering::Relaxed) +} + +pub fn load_config() -> GlobalConfig { + if USE_TEST.load(Ordering::Relaxed) { + return GlobalConfig::default(); + } serde_yaml::from_reader( - File::open(std::env::var("JELLYTHING_CONFIG").unwrap_or_else(|_| { + std::fs::File::open(std::env::var("JELLYTHING_CONFIG").unwrap_or_else(|_| { if std::env::args() .nth(0) .unwrap_or_default() @@ -31,8 +45,11 @@ pub static CONF: LazyLock<GlobalConfig> = LazyLock::new(|| { .expect("config cannot be read"), ) .expect("config invalid") -}); -pub static SECRETS: LazyLock<SecretsConfig> = LazyLock::new(|| { - serde_yaml::from_reader(File::open(&CONF.secrets_path).expect("secrets file missing")) +} +fn load_secrets() -> SecretsConfig { + if USE_TEST.load(Ordering::Relaxed) { + return SecretsConfig::default(); + } + serde_yaml::from_reader(std::fs::File::open(&CONF.secrets_path).expect("secrets file missing")) .expect("secrets config invalid") -}); +} |