From 673f28152eb11ac814957e6c8d441bfd625e0b03 Mon Sep 17 00:00:00 2001 From: Kamil Jarosz Date: Sat, 14 Sep 2024 10:40:13 +0200 Subject: [PATCH] desktop: Migrate old log files from config directory Ruffle used to save log files in config directory. This patch makes Ruffle migrate those files at startup. --- desktop/src/main.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 13d4a7682..027404a15 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -160,6 +160,9 @@ async fn main() -> Result<(), Error> { if let Some(parent) = log_path.parent() { std::fs::create_dir_all(parent)?; } + if let Err(err) = migrate_logs(&preferences, logs_path) { + tracing::warn!("Failed to migrate logs: {}", err); + } // [NA] `_guard` cannot be `_` or it'll immediately drop // https://docs.rs/tracing-appender/latest/tracing_appender/non_blocking/index.html @@ -194,3 +197,38 @@ async fn main() -> Result<(), Error> { shutdown(); result } + +/// Move logs from config directory into proper log directory. +/// +/// This exists because in older versions Ruffle created log files in the config directory. +/// +/// TODO Remove this after some time. +fn migrate_logs( + preferences: &GlobalPreferences, + log_path: &std::path::Path, +) -> std::io::Result<()> { + tracing::debug!("Migrating logs from config directory to log directory"); + let config_path = &preferences.cli.config; + let paths = std::fs::read_dir(config_path)?; + + for dir in paths.flatten() { + if dir.file_name().as_encoded_bytes().ends_with(b".log") { + let src = dir.path(); + let dest = log_path.join(dir.file_name()); + tracing::info!( + "Moving log file {} -> {}", + src.to_string_lossy(), + dest.to_string_lossy() + ); + if let Err(err) = std::fs::rename(&src, &dest) { + tracing::warn!( + "Failed to move log file {} -> {}: {err}", + src.to_string_lossy(), + dest.to_string_lossy() + ) + } + } + } + + Ok(()) +}