From 78ee20bfc39de3423758fd49586a9d24a1333c96 Mon Sep 17 00:00:00 2001 From: euzu Date: Sun, 4 Jan 2026 12:43:02 +0100 Subject: [PATCH 1/5] used mapping files are now logged --- backend/src/api/config_file.rs | 6 ++++-- backend/src/main.rs | 19 ++++++++++--------- backend/src/utils/file/config_reader.rs | 15 +++++++++++++-- backend/src/utils/file/mapping_reader.rs | 24 ++++++++++++++++-------- shared/src/model/config/paths.rs | 5 ++++- shared/src/utils/default_utils.rs | 4 ++++ 6 files changed, 51 insertions(+), 22 deletions(-) diff --git a/backend/src/api/config_file.rs b/backend/src/api/config_file.rs index 173a30af8..6c25730eb 100644 --- a/backend/src/api/config_file.rs +++ b/backend/src/api/config_file.rs @@ -23,9 +23,11 @@ impl ConfigFile { let paths = > as Access>::load(&app_state.app_config.paths); if let Some(mapping_file_path) = paths.mapping_file_path.as_ref() { match utils::read_mappings(mapping_file_path, true) { - Ok(Some(mappings_cfg)) => { + Ok(Some((mapping_files, mappings_cfg))) => { app_state.app_config.set_mappings(mapping_file_path, &mappings_cfg); - info!("Loaded mapping file {mapping_file_path}"); + for mapping_file in mapping_files { + info!("Loaded mapping file {}", mapping_file.display()); + } } Ok(None) => { info!("No mapping file loaded {mapping_file_path}"); diff --git a/backend/src/main.rs b/backend/src/main.rs index 2910634d3..87182603f 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -10,14 +10,14 @@ mod modules; include_modules!(); use crate::auth::generate_password; +use crate::library::LibraryProcessor; use crate::model::{ AppConfig, Config, Healthcheck, HealthcheckConfig, ProcessTargets, SourcesConfig, }; use crate::processing::processor::playlist; -use crate::utils::{db_viewer, init_logger}; use crate::utils::request::create_client; use crate::utils::{config_file_reader, resolve_env_var}; -use crate::library::LibraryProcessor; +use crate::utils::{db_viewer, init_logger}; use arc_swap::access::Access; use arc_swap::ArcSwap; use chrono::{DateTime, Utc}; @@ -178,13 +178,13 @@ fn print_info(app_config: &AppConfig) { info!("Config file: {:?}", &paths.config_file_path); info!("Source file: {:?}", &paths.sources_file_path); info!("Api Proxy File: {:?}", &paths.api_proxy_file_path); - info!( - "Mapping file: {:?}", - &paths - .mapping_file_path - .as_ref() - .map_or_else(|| "not used", |v| v.as_str()) - ); + info!("Mapping path: {:?}", &paths.mapping_file_path.as_ref().map_or_else(|| "not used", |v| v.as_str())); + + if let Some(mapping_paths) = paths.mapping_files_used.as_ref() { + for mapping_path in mapping_paths { + info!("Mapping file loaded: {mapping_path}"); + } + } if let Some(cache) = config.reverse_proxy.as_ref().and_then(|r| r.cache.as_ref()) { if cache.enabled { @@ -208,6 +208,7 @@ fn get_file_paths(args: &Args) -> ConfigPaths { config_file_path: config_file, sources_file_path: sources_file, mapping_file_path: mappings_file, // need to be set after config read + mapping_files_used: None, api_proxy_file_path: api_proxy_file, custom_stream_response_path: None, } diff --git a/backend/src/utils/file/config_reader.rs b/backend/src/utils/file/config_reader.rs index 2ea49897f..afff6c676 100644 --- a/backend/src/utils/file/config_reader.rs +++ b/backend/src/utils/file/config_reader.rs @@ -117,7 +117,7 @@ pub fn read_app_config_dto(paths: &ConfigPaths, let config = read_config_file(config_file, resolve_env, include_computed)?; let sources = read_sources_file(sources_file, resolve_env, include_computed, config.get_hdhr_device_overview().as_ref())?; let mappings = if let Some(mappings_file) = paths.mapping_file_path.as_ref() { - read_mappings_file(mappings_file, resolve_env).unwrap_or(None) + read_mappings_file(mappings_file, resolve_env).unwrap_or(None).map(|(_, mappings)| mappings) } else { None }; @@ -244,7 +244,18 @@ pub async fn read_initial_app_config(paths: &mut ConfigPaths, if let Some(mappings_file) = &paths.mapping_file_path { match utils::read_mappings(mappings_file.as_str(), resolve_env) { - Ok(Some(mappings)) => app_config.set_mappings(mappings_file, &mappings), + Ok(Some((mapping_paths, mappings))) => { + app_config.set_mappings(mappings_file, &mappings); + paths.mapping_files_used = { + let vec: Vec = mapping_paths + .iter() + .map(|p| p.display().to_string()) + .collect(); + + if vec.is_empty() { None } else { Some(vec) } + }; + app_config.paths.store(Arc::new(paths.clone())); + }, Ok(None) => info!("Mapping file: not used"), Err(err) => exit!("{err}"), } diff --git a/backend/src/utils/file/mapping_reader.rs b/backend/src/utils/file/mapping_reader.rs index fb55259d1..f48bc6bd4 100644 --- a/backend/src/utils/file/mapping_reader.rs +++ b/backend/src/utils/file/mapping_reader.rs @@ -26,12 +26,12 @@ fn read_mapping(mapping_file: &Path, resolve_var: bool, prepare_mappings: bool) Ok(None) } -fn read_mappings_from_file(mappings_file: &Path, resolve_env: bool) -> Result, TuliproxError> { +fn read_mappings_from_file(mappings_file: &Path, resolve_env: bool) -> Result, MappingsDto)>, TuliproxError> { match read_mapping(mappings_file, resolve_env, true) { Ok(mappings) => { match mappings { None => Ok(None), - Some(mappings_cfg) => Ok(Some(mappings_cfg)) + Some(mappings_cfg) => Ok(Some((vec![mappings_file.to_path_buf()], mappings_cfg))), } } Err(err) => Err(err), @@ -81,7 +81,7 @@ fn merge_mapping_definitions(mappings: Vec) -> Result Result, TuliproxError> { +fn read_mappings_from_directory(path: &Path, resolve_env: bool) -> Result, MappingsDto)>, TuliproxError> { let mut files = vec![]; let mut visit = |entry: &std::fs::DirEntry, metadata: &std::fs::Metadata| { if metadata.is_file() { @@ -96,9 +96,13 @@ fn read_mappings_from_directory(path: &Path, resolve_env: bool) -> Result