1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
. $PSScriptRoot/../logging.ps1
function Invoke-LoggedMsbuildCommand
{
[CmdletBinding()]
param
(
[string] $Command,
[string] $ExecutePath,
[switch] $GroupOutput,
[int[]] $AllowedExitCodes = @(0)
)
return Invoke-LoggedCommand $Command -ExecutePath $ExecutePath -GroupOutput:$GroupOutput -AllowedExitCodes $AllowedExitCodes -OutputProcessor { param($line) ProcessMsBuildLogLine $line }
}
function Invoke-LoggedCommand
{
[CmdletBinding()]
param
(
[string] $Command,
[string] $ExecutePath,
[switch] $GroupOutput,
[int[]] $AllowedExitCodes = @(0),
[scriptblock] $OutputProcessor
)
$startTime = Get-Date
if($GroupOutput) {
LogGroupStart $Command
} else {
Write-Host "> $Command"
}
if($ExecutePath) {
Push-Location $ExecutePath
}
if (!$OutputProcessor) {
$OutputProcessor = { param($line) $line }
}
try {
Invoke-Expression $Command | Foreach-Object { & $OutputProcessor $_ }
$duration = (Get-Date) - $startTime
if($GroupOutput) {
LogGroupEnd
}
if($LastExitCode -notin $AllowedExitCodes)
{
LogError "Command failed to execute ($duration): $Command`n"
# This fix reproduces behavior that existed before
# https://github.com/Azure/azure-sdk-tools/pull/12235
# Before that change, if a command failed Write-Error was always
# invoked in the failure case. Today, LogError only does Write-Error
# when running locally (not in a CI environment)
if ((Test-SupportsDevOpsLogging) -or (Test-SupportsGitHubLogging)) {
Write-Error "Command failed to execute ($duration): $Command`n"
}
}
else {
Write-Host "Command succeeded ($duration)`n"
}
}
finally {
if($ExecutePath) {
Pop-Location
}
}
}
function Set-ConsoleEncoding
{
[CmdletBinding()]
param
(
[string] $Encoding = 'utf-8'
)
$outputEncoding = [System.Text.Encoding]::GetEncoding($Encoding)
[Console]::OutputEncoding = $outputEncoding
[Console]::InputEncoding = $outputEncoding
}
|