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:
36
src/files/undo/confirmation.rs
Normal file
36
src/files/undo/confirmation.rs
Normal file
@@ -0,0 +1,36 @@
|
||||
use super::types::UndoError;
|
||||
use std::io;
|
||||
|
||||
pub trait ConfirmationStrategy {
|
||||
fn confirm(&self) -> Result<bool, UndoError>;
|
||||
}
|
||||
|
||||
pub struct StdinConfirmation;
|
||||
|
||||
impl ConfirmationStrategy for StdinConfirmation {
|
||||
fn confirm(&self) -> Result<bool, UndoError> {
|
||||
eprint!("\nDo you want to undo these changes? [y/N]: ");
|
||||
|
||||
let mut input = String::new();
|
||||
if io::stdin().read_line(&mut input).is_err() {
|
||||
return Err(UndoError::InputReadFailed(
|
||||
"Failed to read input. Undo cancelled.".to_string(),
|
||||
));
|
||||
}
|
||||
|
||||
let input = input.trim().to_lowercase();
|
||||
if input != "y" && input != "yes" {
|
||||
return Err(UndoError::UserCancelled);
|
||||
}
|
||||
|
||||
Ok(true)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct AutoConfirm;
|
||||
|
||||
impl ConfirmationStrategy for AutoConfirm {
|
||||
fn confirm(&self) -> Result<bool, UndoError> {
|
||||
Ok(true)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user