🔧 Add optional local config file for default mode

This commit is contained in:
Manuel Cillero 2023-10-29 19:10:54 +01:00
parent f198b35762
commit 6ac4c9ce33
4 changed files with 36 additions and 28 deletions

2
.gitignore vendored
View file

@ -1,4 +1,6 @@
**/target **/target
**/log/*.log* **/log/*.log*
**/local.*.toml
**/local.toml
Cargo.lock Cargo.lock
workdir workdir

View file

@ -1,4 +1,10 @@
[database] [app]
db_name = "drust" #theme = "Basic"
db_user = "drust" #theme = "Chassis"
db_pass = "DrU__#3T" theme = "Inception"
#theme = "Bootsier"
#theme = "Bulmix"
language = "es-ES"
[log]
tracing = "Info,pagetop=Debug,sqlx::query=Warn"

View file

@ -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"

View file

@ -121,7 +121,7 @@ mod value;
use crate::config::data::ConfigData; use crate::config::data::ConfigData;
use crate::config::file::File; use crate::config::file::File;
use crate::LazyStatic; use crate::{concat_string, LazyStatic};
use serde::Deserialize; 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 /// Valores originales de la configuración en forma de pares `clave = valor` recogidos de los
/// archivos de configuración. /// archivos de configuración.
#[rustfmt::skip]
pub static CONFIG: LazyStatic<ConfigData> = LazyStatic::new(|| { pub static CONFIG: LazyStatic<ConfigData> = LazyStatic::new(|| {
// Modo de ejecución según la variable de entorno PAGETOP_RUN_MODE. Por defecto 'default'. // 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()); let run_mode = env::var("PAGETOP_RUN_MODE").unwrap_or_else(|_| "default".into());
@ -139,17 +141,28 @@ pub static CONFIG: LazyStatic<ConfigData> = LazyStatic::new(|| {
// Inicializa los ajustes. // Inicializa los ajustes.
let mut settings = ConfigData::default(); 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 settings
// Primero añade la configuración común a todos los entornos. Opcional. // Primero añade la configuración común a todos los entornos. Por defecto 'common.toml'.
.merge(File::with_name(&format!("{}/{}.toml", CONFIG_DIR, "common")).required(false)) .merge(
.unwrap() File::with_name(&concat_string!(CONFIG_DIR, "/common.toml"))
// Combina la configuración específica del entorno. Por defecto 'default.toml'. Opcional. .required(false)
.merge(File::with_name(&format!("{}/{}.toml", CONFIG_DIR, run_mode)).required(false)) ).unwrap()
.unwrap() // Añade la configuración específica del entorno. Por defecto 'default.toml'.
// Combina la configuración local. Este archivo no debería incluirse en git. Opcional. .merge(
.merge(File::with_name(&format!("{}/{}.toml", CONFIG_DIR, "local")).required(false)) File::with_name(&concat_string!(CONFIG_DIR, "/", run_mode, ".toml"))
.unwrap() .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. // Salvaguarda el modo de ejecución.
.set("app.run_mode", run_mode) .set("app.run_mode", run_mode)
.unwrap(); .unwrap();