use std::path::PathBuf;
use tracing::debug;
pub fn rotate_file_if_needed(
file_path: &PathBuf,
max_size: u64,
) -> Result<Option<PathBuf>, std::io::Error> {
if !file_path.exists() {
return Ok(None);
}
let metadata = std::fs::metadata(file_path)?;
if metadata.len() <= max_size {
return Ok(None);
}
let timestamp = chrono::Utc::now().format("%Y%m%d_%H%M%S");
let parent = file_path
.parent()
.unwrap_or_else(|| std::path::Path::new("."));
let stem = file_path
.file_stem()
.and_then(|s| s.to_str())
.unwrap_or("file");
let extension = file_path.extension().and_then(|s| s.to_str()).unwrap_or("");
let new_path = parent.join(format!("{}_{}.{}", stem, timestamp, extension));
debug!(
"Rotating file {} ({} bytes) to {}",
file_path.display(),
metadata.len(),
new_path.display()
);
Ok(Some(new_path))
}