mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-08 12:18:50 +02:00
[ci]Verify notice.md and NuGet packages are synced (#23000)
* Create verifyNoticeMdAgainstNugetPackages.ps1 * Update build-powertoys-steps.yml * Update verifyNoticeMdAgainstNugetPackages.ps1 * Update verifyNoticeMdAgainstNugetPackages.ps1 * Update build-powertoys-steps.yml * Update build-powertoys-steps.yml * Update NOTICE.md * Update NOTICE.md * Update NOTICE.md * Update verifyNoticeMdAgainstNugetPackages.ps1 * Update verifyNoticeMdAgainstNugetPackages.ps1 * adding back in the Community Toolkit items weird, some how there was a checkin with this being removed * Update .pipelines/verifyNoticeMdAgainstNugetPackages.ps1 Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com> * Update .pipelines/verifyNoticeMdAgainstNugetPackages.ps1 Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com> * Update .pipelines/verifyNoticeMdAgainstNugetPackages.ps1 Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com> * Update .pipelines/verifyNoticeMdAgainstNugetPackages.ps1 Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com> * shifting the restore for setup back to where it was plus moving the verification to end. * moved wrong powershell, fliping back Co-authored-by: Jeremy Sinclair <4016293+snickler@users.noreply.github.com>
This commit is contained in:
@@ -8,7 +8,7 @@ steps:
|
||||
clean: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Verifying Nuget packages for PowerToys.sln
|
||||
displayName: Verifying Nuget package versions for PowerToys.sln
|
||||
inputs:
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\verifyNugetPackages.ps1'
|
||||
arguments: -solution '$(build.sourcesdirectory)\PowerToys.sln'
|
||||
@@ -69,7 +69,7 @@ steps:
|
||||
configPath: NuGet.config
|
||||
restoreSolution: PowerToys.sln
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\packages'
|
||||
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build PowerToys.sln'
|
||||
inputs:
|
||||
@@ -137,12 +137,6 @@ steps:
|
||||
msbuildArgs: ${{ parameters.additionalBuildArguments }}
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Download and install WiX 3.14 development build
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1'
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: Restore NuGet packages for PowerToysSetup.sln
|
||||
inputs:
|
||||
@@ -152,6 +146,12 @@ steps:
|
||||
restoreSolution: installer\PowerToysSetup.sln
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\installer\packages'
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Download and install WiX 3.14 development build
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1'
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build PowerToys MSI'
|
||||
inputs:
|
||||
@@ -227,3 +227,10 @@ steps:
|
||||
**\powerpreviewTest.dll
|
||||
**\UnitTests-FancyZones.dll
|
||||
!**\obj\**
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Verifying Notice.md and Nuget packages match
|
||||
inputs:
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\verifyNoticeMdAgainstNugetPackages.ps1'
|
||||
arguments: -path '$(build.sourcesdirectory)\'
|
||||
pwsh: true
|
||||
73
.pipelines/verifyNoticeMdAgainstNugetPackages.ps1
Normal file
73
.pipelines/verifyNoticeMdAgainstNugetPackages.ps1
Normal file
@@ -0,0 +1,73 @@
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory=$True,Position=1)]
|
||||
[string]$path
|
||||
)
|
||||
|
||||
$noticeFile = Get-Content -Raw "NOTICE.md"
|
||||
|
||||
Write-Host $noticeFile
|
||||
|
||||
Write-Host "Verifying NuGet packages"
|
||||
|
||||
$projFiles = Get-ChildItem $path -Filter *.csproj -force -Recurse
|
||||
$projFiles.Count
|
||||
|
||||
Write-Host "Going through all csproj files"
|
||||
|
||||
$totalList = $projFiles | ForEach-Object -Parallel {
|
||||
$csproj = $_
|
||||
$nugetTemp = @();
|
||||
|
||||
#Workaround for preventing exit code from dotnet process from reflecting exit code in PowerShell
|
||||
$procInfo = New-Object System.Diagnostics.ProcessStartInfo -Property @{
|
||||
FileName = "dotnet.exe";
|
||||
Arguments = "list $csproj package";
|
||||
RedirectStandardOutput = $true;
|
||||
RedirectStandardError = $true;
|
||||
}
|
||||
|
||||
$proc = [System.Diagnostics.Process]::Start($procInfo);
|
||||
|
||||
while (!$proc.StandardOutput.EndOfStream) {
|
||||
$nugetTemp += $proc.StandardOutput.ReadLine();
|
||||
}
|
||||
|
||||
$proc = $null;
|
||||
$procInfo = $null;
|
||||
|
||||
if($nugetTemp -is [array] -and $nugetTemp.count -gt 3)
|
||||
{
|
||||
$temp = New-Object System.Collections.ArrayList
|
||||
$temp.AddRange($nugetTemp)
|
||||
$temp.RemoveRange(0, 3)
|
||||
|
||||
foreach($p in $temp)
|
||||
{
|
||||
# breaking item down to usable array and getting 1 and 2, see below of a sample output
|
||||
# > PACKAGE VERSION VERSION
|
||||
|
||||
$p = -split $p
|
||||
$p = $p[1, 2]
|
||||
$tempString = $p[0] + " " + $p[1]
|
||||
|
||||
if(![string]::IsNullOrWhiteSpace($tempString))
|
||||
{
|
||||
echo "- $tempString";
|
||||
}
|
||||
}
|
||||
$csproj = $null;
|
||||
}
|
||||
} -ThrottleLimit 4 | Sort-Object
|
||||
|
||||
$returnList = [System.Collections.Generic.HashSet[string]]($totalList) -join "`r`n"
|
||||
|
||||
Write-Host $returnList
|
||||
|
||||
if (!$noticeFile.Trim().EndsWith($returnList.Trim()))
|
||||
{
|
||||
Write-Host -ForegroundColor Red "Notice.md does not match NuGet list."
|
||||
exit 1
|
||||
}
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user