TaskFunctions/Invoke-PlumberJSON.ps1
|
function Invoke-PlumberJSON { <# .SYNOPSIS Runs the JSON task body. #> [CmdletBinding()] param () $jsonFiles = Get-PlumberTaskFile -Task JSON -Extension '.json' if (-not $jsonFiles) { Write-Build Yellow 'No JSON files found' return } $failures = [System.Collections.Generic.List[string]]::new() foreach ($jsonFile in $jsonFiles) { try { Get-Content $jsonFile.FullName -Raw -ErrorAction Stop | ConvertFrom-Json -ErrorAction Stop | ConvertTo-Json -ErrorAction Stop | Out-Null } catch { # Write-Error per file would terminate the loop under # Invoke-Build's ErrorActionPreference Stop; collect instead. $failures.Add("Invalid JSON in $($jsonFile.FullName): $($_.Exception.Message)") } } if ($failures) { Write-Error ($failures -join (', ' + [Environment]::NewLine)) } } |