eng/scripts/Command-InvocationHelpers.ps1 (39 lines of code) (raw):
$RepoRoot = (Resolve-Path "$PSScriptRoot/../..").Path.Replace('\', '/')
function Invoke-LoggedCommand($Command, $ExecutePath) {
$startTime = Get-Date
Push-Location $ExecutePath
try {
Write-Host "`n============================================================"
Write-Host "From $PWD"
Write-Host "> $Command"
Write-Host "============================================================"
Invoke-Expression $Command
$duration = (Get-Date) - $startTime
Write-Host "------------------------------------------------------------"
if ($LastExitCode -ne 0) {
Write-Host "##[error]Command failed: $command"
}
else {
Write-Host "End: $command"
}
Write-Host "Exit code $LastExitCode, Duration: $($Duration.TotalSeconds.ToString("f3"))s"
Write-Host "------------------------------------------------------------`n"
if ($LastExitCode) {
exit $LastExitCode
}
}
finally {
Pop-Location
}
}
function Set-ConsoleEncoding {
[CmdletBinding()]
param
(
[string] $Encoding = 'utf-8'
)
$outputEncoding = [System.Text.Encoding]::GetEncoding($Encoding)
[Console]::OutputEncoding = $outputEncoding
[Console]::InputEncoding = $outputEncoding
}
Set-Alias -Name invoke -Value Invoke-LoggedCommand