Private/Invoke-KubeMemoBinary.ps1
|
function Invoke-KubeMemoBinary { [CmdletBinding()] param( [Parameter(Mandatory)] [string[]]$Arguments, [switch]$ParseJson, [switch]$PassthruTerminal ) $binary = Get-KubeMemoBinaryPath if ($PassthruTerminal) { & $binary @Arguments if ($LASTEXITCODE -ne 0) { throw "kubememo $($Arguments -join ' ') failed with exit code $LASTEXITCODE." } return } $output = & $binary @Arguments 2>&1 if ($LASTEXITCODE -ne 0) { throw ($output -join [Environment]::NewLine) } $text = ($output -join [Environment]::NewLine).Trim() if (-not $ParseJson) { return $text } if ([string]::IsNullOrWhiteSpace($text)) { return $null } $parsed = $text | ConvertFrom-Json -Depth 20 if ($parsed.PSObject.Properties.Name -contains 'items') { return @($parsed.items) } return $parsed } |