refactor: 入口逻辑下沉第一块(路径解析与条目筛选)

把两个内联函数从入口脚本搬进模块,它们正好覆盖下沉时最容易出错的三类依赖:

  * Resolve-BakNRetRootedPath(原 Backup.ps1 与 Restore.ps1 各一份同名副本)靠 $PSScriptRoot 找仓库根 —— 搬进模块之后 $PSScriptRoot 会变成**模块目录**,语义就悄悄变了。所以根目录改成显式参数,由调用方传 $PSScriptRoot。

  * Test-BakNRetItemSelected(原在 Backup.ps1 里)直接读脚本级的 $Only / $Skip。那种闭包依赖让它没法单独测:要测它就得先构造一个入口脚本。现在两个清单是显式参数。

  * 第三个函数 Get-7zExecutable 我**没有**动:它和模块里已有的 7z 定位功能重复,但两者返回的东西不同(一个路径字符串、一个带 Name/Command/Extension 的对象),合并要先确认语义,不能顺手删。记在下面待办里。

过程里翻车一次并当场修好:给调用点补参数时我是按"行尾追加"做的,结果 3 处把参数甩到了 `)` 或 `}` 外面(例如 `if (...) { continue } -Only $Only`)。**解析是零错的** —— 又一次"绿着但是错的"。修法不是继续追加,而是按内容精确定位那 4 行、把参数插到括号里面;修完先用 5 个即时探针确认两个函数真的能调起来(含 -Only 命中、-Skip 否决、绝对路径不被拼根),再跑全套。

验收:test.ps1 9/9 全绿(7 与 5.1)、102 个文件两版解析零错、构建工具仍能合回单文件。
This commit is contained in:
Shuery committed 2026-09-27 10:25:05 +08:00
1 parent 60ecbc2933
commit bbfece10b6
6 files changed
+66 -37

No files matched your search

+2 -10
View File
@@ -86,17 +86,9 @@ if ($PSBoundParameters.ContainsKey('Verbose')) { Set-BakNRetDebug }
$script:Config = Get-BakNRetConfig -Path $ConfigPath
$SupportedFormats = @('.7z', '.rar', '.zip', '.tar')
function Resolve-ConfigPath {
param([string]$Path, [string]$Default)
$value = if ($Path) { $Path } else { $Default }
if (-not [System.IO.Path]::IsPathRooted($value)) {
$value = Join-Path $PSScriptRoot $value
}
return $value
}
if (-not $BackupDir) { $BackupDir = Resolve-ConfigPath -Path $null -Default $script:Config.BackupDir }
$logDir = Resolve-ConfigPath -Path $null -Default $script:Config.LogDir
if (-not $BackupDir) { $BackupDir = Resolve-BakNRetRootedPath -Path $null -Default $script:Config.BackupDir -Root $PSScriptRoot }
$logDir = Resolve-BakNRetRootedPath -Path $null -Default $script:Config.LogDir -Root $PSScriptRoot
$catalogPath = Resolve-BakNRetCatalogPath -Configured $script:Config.SoftwareCatalog -Root $PSScriptRoot
$manifestPath = Join-Path $BackupDir 'manifest.json'