From e5d3e3a9c3e3257aaa5b1febd2893aa169c6c818 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Mon, 13 Jul 2020 11:33:48 -0400 Subject: Adding a configurable config location through an env var. (#960) * Adding a configurable config location through an env var. - Its `LEMMY_CONFIG_LOCATION` - Fixes #764 * Using a static for CONFIG_FILE again. * Make clippy happy --- server/lemmy_utils/src/settings.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'server/lemmy_utils/src') diff --git a/server/lemmy_utils/src/settings.rs b/server/lemmy_utils/src/settings.rs index 2ce33f58..0607974f 100644 --- a/server/lemmy_utils/src/settings.rs +++ b/server/lemmy_utils/src/settings.rs @@ -1,6 +1,7 @@ use config::{Config, ConfigError, Environment, File}; use serde::Deserialize; use std::{fs, io::Error, net::IpAddr, sync::RwLock}; +use std::env; static CONFIG_FILE_DEFAULTS: &str = "config/defaults.hjson"; static CONFIG_FILE: &str = "config/config.hjson"; @@ -83,7 +84,7 @@ impl Settings { s.merge(File::with_name(CONFIG_FILE_DEFAULTS))?; - s.merge(File::with_name(CONFIG_FILE).required(false))?; + s.merge(File::with_name(&Self::get_config_location()).required(false))?; // Add in settings from the environment (with a prefix of LEMMY) // Eg.. `LEMMY_DEBUG=1 ./target/app` would set the `debug` key @@ -115,12 +116,16 @@ impl Settings { format!("{}/api/v1", self.hostname) } + pub fn get_config_location() -> String { + env::var("LEMMY_CONFIG_LOCATION").unwrap_or_else(|_| CONFIG_FILE.to_string()) + } + pub fn read_config_file() -> Result { - fs::read_to_string(CONFIG_FILE) + fs::read_to_string(Self::get_config_location()) } pub fn save_config_file(data: &str) -> Result { - fs::write(CONFIG_FILE, data)?; + fs::write(Self::get_config_location(), data)?; // Reload the new settings // From https://stackoverflow.com/questions/29654927/how-do-i-assign-a-string-to-a-mutable-static-variable/47181804#47181804 -- cgit v1.2.3