Files
noentropy/src/files/undo/confirmation.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

37 lines
894 B
Rust

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