2.4 KiB
2.4 KiB
Data Model: Replace Command with Multi-Pattern Support
Entities
ReplaceRequest
- Description: Captures all inputs driving a replace operation.
- Fields:
workingDir(string, required): Absolute path where traversal begins.patterns([]string, min length 2): Ordered list of literal substrings to replace.replacement(string, required): Literal value substituting each pattern.includeDirectories(bool): Whether directories participate in replacement.recursive(bool): Traverse subdirectories depth-first.includeHidden(bool): Include hidden files during traversal.extensions([]string): Optional extension filters inherited from scope flags.dryRun(bool): Preview mode flag; true during preview, false when applying changes.
- Validations:
patternsMUST be deduplicated case-sensitively before execution.replacementMAY be empty, but command must warn the user during preview.workingDirMUST exist and be readable before traversal.
ReplaceSummary
- Description: Aggregates preview/apply outcomes for reporting and ledger entries.
- Fields:
totalFiles(int): Count of files/directories affected.patternMatches(map[string]int): Total substitutions per pattern.conflicts([]ConflictDetail): Detected filename collisions with rationale.ledgerEntryID(string, optional): Identifier once committed to.renamerledger.
ConflictDetail
- Description: Describes a file that could not be renamed due to collision or validation failure.
- Fields:
originalPath(string)proposedPath(string)reason(string): Human-readable description (e.g., "target already exists").
Relationships
ReplaceRequestproduces a stream of candidate rename operations via traversal utilities.ReplaceSummaryaggregates results from executing the request and is persisted inside ledger entries.ConflictDetailrecords subset ofReplaceSummarywhen collisions block application.
State Transitions
- Parsing: CLI args parsed into
ReplaceRequest; validations run immediately. - Preview: Traversal + replacement simulation produce
ReplaceSummarywith proposed paths. - Confirm: Upon user confirmation (or
--yes), operations apply atomically; ledger entry written. - Undo: Ledger reverse operation reads
ReplaceSummarydata to restore originals.