| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #-------------------------------------------------------------------------------------------------------
- # Copyright (C) Microsoft. All rights reserved.
- # Copyright (c) ChakraCore Project Contributors. All rights reserved.
- # Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- #-------------------------------------------------------------------------------------------------------
- using namespace System.Text
- using module '.\package-classes.psm1'
- Set-StrictMode -Version 5.1
- $packageRoot = Split-Path -Parent $MyInvocation.MyCommand.Definition
- $packageVersionFile = Join-Path $packageRoot '.pack-version'
- $packageDataFile = Join-Path $packageRoot 'package-data.xml'
- $packageArtifactsDir = Join-Path $packageRoot 'Artifacts'
- $localNugetExe = Join-Path $packageRoot 'nuget.exe'
- # helper to download file with retry
- function DownloadFileWithRetry([string]$sourceUrl, [string]$destFile, [int]$retries) {
- $delayTimeInSeconds = 5
- while ($true) {
- try {
- Invoke-WebRequest $sourceUrl -OutFile $destFile
- break
- }
- catch {
- Write-Host "Failed to download $sourceUrl"
- if ($retries -gt 0) {
- $retries--
- Write-Host "Waiting $delayTimeInSeconds seconds before retrying. Retries left: $retries"
- Start-Sleep -Seconds $delayTimeInSeconds
- }
- else {
- $exception = $_.Exception
- throw $exception
- }
- }
- }
- }
- # helper to create NuGet package
- function CreateNugetPackage ([Package]$package, [string]$version, [string]$outputDir) {
- $properties = $package.Properties.Clone()
- $properties['id'] = $package.Id
- $properties['version'] = $version
- $sb = New-Object StringBuilder
- foreach ($propertyName in $properties.Keys) {
- $propertyValue = $properties[$propertyName]
- if ($sb.Length -gt 0) {
- [void]$sb.Append(';')
- }
- [void]$sb.AppendFormat('{0}={1}', $propertyName, $propertyValue.Replace('"', '""'))
- }
- $propertiesStr = $sb.toString()
- [void]$sb.Clear()
- $package.PreprocessFiles()
- & $localNugetExe pack $package.NuspecFile -OutputDirectory $outputDir -Properties $propertiesStr
- $package.RemovePreprocessedFiles()
- }
- if (Test-Path $packageArtifactsDir) {
- # Delete any existing output.
- Remove-Item "$packageArtifactsDir\*.nupkg"
- }
- if (!(Test-Path $localNugetExe)) {
- $nugetDistUrl = 'https://dist.nuget.org/win-x86-commandline/latest/nuget.exe'
- Write-Host "NuGet.exe not found - downloading latest from $nugetDistUrl"
- DownloadFileWithRetry $nugetDistUrl $localNugetExe -retries 3
- }
- # Create new NuGet packages based on data from an XML file.
- $version = (Get-Content $packageVersionFile)
- $packages = [Package]::GetPackages($packageDataFile)
- foreach ($package in $packages) {
- CreateNugetPackage $package $version $packageArtifactsDir
- }
|