2023-01-09 12:27:57 +00:00
|
|
|
[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)
|
|
|
|
{
|
2023-02-15 02:38:53 +00:00
|
|
|
# Need to debug this script? Uncomment this line.
|
|
|
|
# Write-Host $csproj "`r`n" $nugetTemp "`r`n"
|
2023-01-09 12:27:57 +00:00
|
|
|
$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
|