Files
noentropy/src/files/mover/paths.rs
glitchySid 10e508fa0e 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
2026-01-10 21:08:00 +05:30

31 lines
735 B
Rust

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))
}