Add restore dry-run preview#78
Draft
olxgdm wants to merge 6 commits into
Draft
Conversation
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Closes #77.
This PR adds a non-mutating restore preview mode for both single-file and batch restore flows:
cfgsync restore <file> --dry-runcfgsync restore --all --dry-run--from-prefix/--to-prefixDry-run validates the same restore inputs that apply mode depends on, including tracked registry entries, stored backup paths, ordinary-file backups, prefix remapping, and destination state. It then prints one impact line per planned restore without copying files, creating destination parent directories, or mutating registry/storage/app config/original files.
Behavior
Dry-run emits machine-readable preview lines:
The command class now uses an explicit
RestoreMode { Apply, DryRun }, keeping real file copying inStorageManager::RestoreEntryand keeping dry-run planning inRestoreCommand.Batch dry-run preserves existing restore batch semantics: recoverable per-file failures are reported, later registry entries continue to be processed, and the command exits non-zero with the existing
Restore completed with N failure(s).summary.Implementation Notes
--dry-runto the restore CLI.StorageManager::ResolveStoredPathand ordinary-file checks.unchangedfromwould-overwrite.Tests
Added command-level and CLI-level coverage for:
would-create,would-overwrite, andunchangedoutputrestore --helpdocumenting--dry-runVerification
Ran locally:
cmake --build build ctest --test-dir build -R "RestoreCommand|RestoreCommandCli" --output-on-failure ctest --test-dir build --output-on-failure ctest --test-dir build --output-on-failure --quietAll tests passed, including the full CTest suite: 260/260.