refactor: reorganize file operations and extract test modules
- Extract mover and undo functionality into dedicated modules (mover/ and undo/ subdirectories) - Move cross-platform file operations to separate file_ops.rs module for reusability - Extract batch and categorizer tests into separate test files (batch_test.rs, categorizer_test.rs) - Refactor orchestrator.rs with extracted helper functions for improved readability - Separate cache and undo log initialization - Extract path resolution and offline mode determination logic - Simplify main organization flow by delegating to helper functions - Update module exports to expose new types and functions (MoveError, MoveSummary, UndoError, UndoSummary) - Reduce code duplication of move_file_cross_platform implementation
This commit is contained in:
30
src/files/mover/paths.rs
Normal file
30
src/files/mover/paths.rs
Normal file
@@ -0,0 +1,30 @@
|
||||
use super::types::MoveError;
|
||||
use std::{
|
||||
ffi::OsStr,
|
||||
fs,
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
|
||||
pub fn build_target_path(
|
||||
base_path: &Path,
|
||||
category: &str,
|
||||
sub_category: &str,
|
||||
filename: &str,
|
||||
) -> PathBuf {
|
||||
let mut final_path = base_path.join(category);
|
||||
if !sub_category.is_empty() {
|
||||
final_path = final_path.join(sub_category);
|
||||
}
|
||||
|
||||
let file_name = Path::new(filename)
|
||||
.file_name()
|
||||
.unwrap_or_else(|| OsStr::new(filename))
|
||||
.to_string_lossy()
|
||||
.into_owned();
|
||||
|
||||
final_path.join(&file_name)
|
||||
}
|
||||
|
||||
pub fn ensure_directory_exists(path: &Path) -> Result<(), MoveError> {
|
||||
fs::create_dir_all(path).map_err(|e| MoveError::DirectoryCreationFailed(path.to_path_buf(), e))
|
||||
}
|
||||
Reference in New Issue
Block a user