From 6ac4c9ce33ec10af378a75f7a1516d7c0feaa762 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Sun, 29 Oct 2023 19:10:54 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Add=20optional=20local=20config?= =?UTF-8?q?=20file=20for=20default=20mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ drust/config/default.toml | 14 ++++++++++---- drust/config/local.toml | 13 ------------- pagetop/src/config.rs | 35 ++++++++++++++++++++++++----------- 4 files changed, 36 insertions(+), 28 deletions(-) delete mode 100644 drust/config/local.toml diff --git a/.gitignore b/.gitignore index 4ebc5a92..7d848115 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ **/target **/log/*.log* +**/local.*.toml +**/local.toml Cargo.lock workdir diff --git a/drust/config/default.toml b/drust/config/default.toml index 1cbcbfea..6f119629 100644 --- a/drust/config/default.toml +++ b/drust/config/default.toml @@ -1,4 +1,10 @@ -[database] -db_name = "drust" -db_user = "drust" -db_pass = "DrU__#3T" +[app] +#theme = "Basic" +#theme = "Chassis" +theme = "Inception" +#theme = "Bootsier" +#theme = "Bulmix" +language = "es-ES" + +[log] +tracing = "Info,pagetop=Debug,sqlx::query=Warn" diff --git a/drust/config/local.toml b/drust/config/local.toml deleted file mode 100644 index 343add5c..00000000 --- a/drust/config/local.toml +++ /dev/null @@ -1,13 +0,0 @@ -[app] -#theme = "Basic" -#theme = "Chassis" -theme = "Inception" -#theme = "Bootsier" -#theme = "Bulmix" -language = "es-ES" - -[log] -tracing = "Info,pagetop=Debug,sqlx::query=Warn" - -[dev] -#static_files = "../pagetop/static" diff --git a/pagetop/src/config.rs b/pagetop/src/config.rs index fa2b9afd..44c8466e 100644 --- a/pagetop/src/config.rs +++ b/pagetop/src/config.rs @@ -121,7 +121,7 @@ mod value; use crate::config::data::ConfigData; use crate::config::file::File; -use crate::LazyStatic; +use crate::{concat_string, LazyStatic}; use serde::Deserialize; @@ -132,6 +132,8 @@ const CONFIG_DIR: &str = "config"; /// Valores originales de la configuración en forma de pares `clave = valor` recogidos de los /// archivos de configuración. + +#[rustfmt::skip] pub static CONFIG: LazyStatic = LazyStatic::new(|| { // Modo de ejecución según la variable de entorno PAGETOP_RUN_MODE. Por defecto 'default'. let run_mode = env::var("PAGETOP_RUN_MODE").unwrap_or_else(|_| "default".into()); @@ -139,17 +141,28 @@ pub static CONFIG: LazyStatic = LazyStatic::new(|| { // Inicializa los ajustes. let mut settings = ConfigData::default(); - // Combina los archivos de configuración y asigna el modo de ejecución. + // Combina los archivos (opcionales) de configuración y asigna el modo de ejecución. settings - // Primero añade la configuración común a todos los entornos. Opcional. - .merge(File::with_name(&format!("{}/{}.toml", CONFIG_DIR, "common")).required(false)) - .unwrap() - // Combina la configuración específica del entorno. Por defecto 'default.toml'. Opcional. - .merge(File::with_name(&format!("{}/{}.toml", CONFIG_DIR, run_mode)).required(false)) - .unwrap() - // Combina la configuración local. Este archivo no debería incluirse en git. Opcional. - .merge(File::with_name(&format!("{}/{}.toml", CONFIG_DIR, "local")).required(false)) - .unwrap() + // Primero añade la configuración común a todos los entornos. Por defecto 'common.toml'. + .merge( + File::with_name(&concat_string!(CONFIG_DIR, "/common.toml")) + .required(false) + ).unwrap() + // Añade la configuración específica del entorno. Por defecto 'default.toml'. + .merge( + File::with_name(&concat_string!(CONFIG_DIR, "/", run_mode, ".toml")) + .required(false) + ).unwrap() + // Añade la configuración local reservada del entorno. Por defecto 'default.local.toml'. + .merge( + File::with_name(&concat_string!(CONFIG_DIR, "/", run_mode, ".local.toml")) + .required(false), + ).unwrap() + // Añade la configuración local reservada general. Por defecto 'local.toml'. + .merge( + File::with_name(&concat_string!(CONFIG_DIR, "/local.toml")) + .required(false) + ).unwrap() // Salvaguarda el modo de ejecución. .set("app.run_mode", run_mode) .unwrap();