Restore accidental deletion of common.psm1
This commit is contained in:
parent
c3beb1f9b1
commit
92b40a4dbc
|
|
@ -0,0 +1,122 @@
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
# Update the default TLS support to 1.2
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
|
|
||||||
|
function Invoke-Block([scriptblock]$cmd, [string]$WorkingDir = $null) {
|
||||||
|
if ($WorkingDir) {
|
||||||
|
Push-Location $WorkingDir
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
$cmd | Out-String | Write-Verbose
|
||||||
|
& $cmd
|
||||||
|
|
||||||
|
# Need to check both of these cases for errors as they represent different items
|
||||||
|
# - $?: did the powershell script block throw an error
|
||||||
|
# - $lastexitcode: did a windows command executed by the script block end in error
|
||||||
|
if ((-not $?) -or ($lastexitcode -ne 0)) {
|
||||||
|
if ($error -ne $null)
|
||||||
|
{
|
||||||
|
Write-Warning $error[0]
|
||||||
|
}
|
||||||
|
throw "Command failed to execute: $cmd"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if ($WorkingDir) {
|
||||||
|
Pop-Location
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function SaveXml([xml]$xml, [string]$path) {
|
||||||
|
Write-Verbose "Saving to $path"
|
||||||
|
$ErrorActionPreference = 'stop'
|
||||||
|
|
||||||
|
$settings = New-Object System.XML.XmlWriterSettings
|
||||||
|
$settings.OmitXmlDeclaration = $true
|
||||||
|
$settings.Encoding = New-Object System.Text.UTF8Encoding( $true )
|
||||||
|
$writer = [System.XML.XMLTextWriter]::Create($path, $settings)
|
||||||
|
$xml.Save($writer)
|
||||||
|
$writer.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
function LoadXml([string]$path) {
|
||||||
|
Write-Verbose "Reading from $path"
|
||||||
|
|
||||||
|
$ErrorActionPreference = 'stop'
|
||||||
|
$obj = new-object xml
|
||||||
|
$obj.PreserveWhitespace = $true
|
||||||
|
$obj.Load($path)
|
||||||
|
return $obj
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-MSBuildPath {
|
||||||
|
param(
|
||||||
|
[switch]$Prerelease,
|
||||||
|
[string[]]$Requires
|
||||||
|
)
|
||||||
|
|
||||||
|
$vsInstallDir = $null
|
||||||
|
if ($env:VSINSTALLDIR -and (Test-Path $env:VSINSTALLDIR)) {
|
||||||
|
$vsInstallDir = $env:VSINSTALLDIR
|
||||||
|
Write-Verbose "Using VSINSTALLDIR=$vsInstallDir"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$vswhere = "${env:ProgramFiles(x86)}/Microsoft Visual Studio/Installer/vswhere.exe"
|
||||||
|
Write-Verbose "Using vswhere.exe from $vswhere"
|
||||||
|
|
||||||
|
if (-not (Test-Path $vswhere)) {
|
||||||
|
Write-Error "Missing prerequisite: could not find vswhere"
|
||||||
|
}
|
||||||
|
|
||||||
|
[string[]] $vswhereArgs = @()
|
||||||
|
|
||||||
|
if ($Prerelease) {
|
||||||
|
$vswhereArgs += '-prerelease'
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($Requires) {
|
||||||
|
foreach ($r in $Requires) {
|
||||||
|
$vswhereArgs += '-requires', $r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$installs = & $vswhere -format json -version '[15.0, 16.0)' -latest -products * @vswhereArgs | ConvertFrom-Json
|
||||||
|
if (!$installs) {
|
||||||
|
Write-Error "Missing prerequisite: could not find any installations of Visual Studio"
|
||||||
|
}
|
||||||
|
|
||||||
|
$vs = $installs | Select-Object -First 1
|
||||||
|
$vsInstallDir = $vs.installationPath
|
||||||
|
Write-Host "Using $($vs.displayName)"
|
||||||
|
}
|
||||||
|
|
||||||
|
$msbuild = Join-Path $vsInstallDir 'MSBuild/15.0/bin/msbuild.exe'
|
||||||
|
if (!(Test-Path $msbuild)) {
|
||||||
|
Write-Error "Missing prerequisite: could not find msbuild.exe"
|
||||||
|
}
|
||||||
|
return $msbuild
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-RemoteFile([string]$RemotePath, [string]$LocalPath) {
|
||||||
|
if ($RemotePath -notlike 'http*') {
|
||||||
|
Copy-Item $RemotePath $LocalPath
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
$retries = 10
|
||||||
|
while ($retries -gt 0) {
|
||||||
|
$retries -= 1
|
||||||
|
try {
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri $RemotePath -OutFile $LocalPath
|
||||||
|
return
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Verbose "Request failed. $retries retries remaining"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Error "Download failed: '$RemotePath'."
|
||||||
|
}
|
||||||
|
|
@ -20,7 +20,7 @@ param(
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
$repoRoot = Resolve-Path "$PSScriptRoot/../../../"
|
$repoRoot = Resolve-Path "$PSScriptRoot/../../../"
|
||||||
Import-Module -Scope Local "$repoRoot/scripts/common.psm1" -Force
|
Import-Module -Scope Local "$repoRoot/eng/scripts/common.psm1" -Force
|
||||||
$msbuild = Get-MSBuildPath -Prerelease -requires 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64'
|
$msbuild = Get-MSBuildPath -Prerelease -requires 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64'
|
||||||
|
|
||||||
$harvestRoot = "$repoRoot/obj/sfx/"
|
$harvestRoot = "$repoRoot/obj/sfx/"
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ $ErrorActionPreference = 'Stop'
|
||||||
Set-StrictMode -Version 1
|
Set-StrictMode -Version 1
|
||||||
|
|
||||||
$repoRoot = Resolve-Path "$PSScriptRoot/../../"
|
$repoRoot = Resolve-Path "$PSScriptRoot/../../"
|
||||||
Import-Module "$repoRoot/scripts/common.psm1" -Scope Local -Force
|
Import-Module "$repoRoot/eng/scripts/common.psm1" -Scope Local -Force
|
||||||
|
|
||||||
# This ID corresponds to the ProdCon build number
|
# This ID corresponds to the ProdCon build number
|
||||||
Write-Host "ProductBuildId: $env:PRODUCTBUILDID"
|
Write-Host "ProductBuildId: $env:PRODUCTBUILDID"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue