diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-30 10:47:54 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-30 10:47:54 +0200 |
commit | a2ef3f6ec4c830611fde1a2e935588ccbbc61c03 (patch) | |
tree | ddcc1cb501e6c7237edd491aa7136d02150d03d3 /server/src/config.rs | |
parent | 212a0f23bc894faf88e159560c113f504349cc05 (diff) | |
download | jellything-a2ef3f6ec4c830611fde1a2e935588ccbbc61c03.tar jellything-a2ef3f6ec4c830611fde1a2e935588ccbbc61c03.tar.bz2 jellything-a2ef3f6ec4c830611fde1a2e935588ccbbc61c03.tar.zst |
config works
Diffstat (limited to 'server/src/config.rs')
-rw-r--r-- | server/src/config.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/server/src/config.rs b/server/src/config.rs new file mode 100644 index 0000000..27074b4 --- /dev/null +++ b/server/src/config.rs @@ -0,0 +1,43 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2025 metamuffin <metamuffin.org> +*/ + +use anyhow::{anyhow, Context, Result}; +use serde::Deserialize; +use std::env::{args, var}; +use tokio::fs::read_to_string; + +#[derive(Debug, Deserialize)] +struct Config { + transcoder: jellytranscoder::Config, + ui: jellyui::Config, + stream: jellystream::Config, + cache: jellycache::Config, + server: crate::Config, + base: jellybase::Config, + logic: jellylogic::Config, +} + +pub async fn load_config() -> Result<()> { + let path = args() + .nth(1) + .or_else(|| var("JELLYTHING_CONFIG").ok()) + .ok_or(anyhow!( + "No config supplied. Use first argument or JELLYTHING_CONFIG environment variable." + ))?; + + let config_raw = read_to_string(path).await.context("reading main config")?; + let config: Config = serde_yml::from_str(&config_raw).context("parsing main config")?; + + *jellystream::CONF_PRELOAD.lock().unwrap() = Some(config.stream); + *jellytranscoder::CONF_PRELOAD.lock().unwrap() = Some(config.transcoder); + *jellycache::CONF_PRELOAD.lock().unwrap() = Some(config.cache); + *jellylogic::CONF_PRELOAD.lock().unwrap() = Some(config.logic); + *jellybase::CONF_PRELOAD.lock().unwrap() = Some(config.base); + *crate::CONF_PRELOAD.lock().unwrap() = Some(config.server); + *jellyui::CONF_PRELOAD.lock().unwrap() = Some(config.ui); + + Ok(()) +} |