fix(shims): skip PowerShell common params in CLI forwarders
The blind -X -> --x shims forwarded PowerShell common parameters (-ErrorAction, -Verbose, ...) to the Python CLI, e.g. Measure-CIBenchmark.ps1 -> Remove-BuildVM.ps1 -ErrorAction SilentlyContinue produced `ci_orchestrator vm remove --error-action` -> "No such option" -> destroy failed (orphan VM left). Skip common switches and consume value-taking ones. Applied to all 7 blind-loop shims; param-style shims (New-BuildVM, Invoke-RemoteBuild, Get-BuildArtifacts) are not affected. PSSA clean. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,23 +1,37 @@
|
||||
#Requires -Version 5.1
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
# Shim: delegates to the Python ci_orchestrator CLI.
|
||||
# Original PS implementation moved to git history; see plans/A2-closeout.md.
|
||||
$pyArgs = @()
|
||||
foreach ($a in $args) {
|
||||
if ($a -is [string] -and $a.Length -gt 1 -and $a.StartsWith('-') -and -not $a.StartsWith('--')) {
|
||||
$name = $a.Substring(1)
|
||||
$kebab = [Regex]::Replace($name, '(?<=[a-z0-9])([A-Z])', '-$1')
|
||||
$kebab = [Regex]::Replace($kebab, '([A-Z]+)([A-Z][a-z])', '$1-$2')
|
||||
$pyArgs += '--' + $kebab.ToLower()
|
||||
}
|
||||
else {
|
||||
$pyArgs += $a
|
||||
}
|
||||
}
|
||||
|
||||
$venvPython = $env:CI_VENV_PYTHON
|
||||
if (-not $venvPython) { $venvPython = 'F:\CI\python\venv\Scripts\python.exe' }
|
||||
& $venvPython -m ci_orchestrator vm cleanup @pyArgs
|
||||
exit $LASTEXITCODE
|
||||
#Requires -Version 5.1
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
# Shim: delegates to the Python ci_orchestrator CLI.
|
||||
# Original PS implementation moved to git history; see plans/A2-closeout.md.
|
||||
# PowerShell common params (-ErrorAction etc.) must not be forwarded
|
||||
# to the Python CLI. Value-taking ones also consume the next token.
|
||||
$commonWithValue = @{
|
||||
erroraction = $true; warningaction = $true; informationaction = $true
|
||||
progressaction = $true; errorvariable = $true; warningvariable = $true
|
||||
informationvariable = $true; outvariable = $true; outbuffer = $true
|
||||
pipelinevariable = $true
|
||||
}
|
||||
$commonSwitch = @{ verbose = $true; debug = $true; whatif = $true; confirm = $true }
|
||||
|
||||
$pyArgs = @()
|
||||
for ($i = 0; $i -lt $args.Count; $i++) {
|
||||
$a = $args[$i]
|
||||
if ($a -is [string] -and $a.Length -gt 1 -and $a.StartsWith('-') -and -not $a.StartsWith('--')) {
|
||||
$name = $a.Substring(1)
|
||||
$lname = $name.ToLower()
|
||||
if ($commonSwitch.ContainsKey($lname)) { continue }
|
||||
if ($commonWithValue.ContainsKey($lname)) { $i++; continue }
|
||||
$kebab = [Regex]::Replace($name, '(?<=[a-z0-9])([A-Z])', '-$1')
|
||||
$kebab = [Regex]::Replace($kebab, '([A-Z]+)([A-Z][a-z])', '$1-$2')
|
||||
$pyArgs += '--' + $kebab.ToLower()
|
||||
}
|
||||
else {
|
||||
$pyArgs += $a
|
||||
}
|
||||
}
|
||||
|
||||
$venvPython = $env:CI_VENV_PYTHON
|
||||
if (-not $venvPython) { $venvPython = 'F:\CI\python\venv\Scripts\python.exe' }
|
||||
& $venvPython -m ci_orchestrator vm cleanup @pyArgs
|
||||
exit $LASTEXITCODE
|
||||
|
||||
Reference in New Issue
Block a user