eng/common/scripts/Verify-Resource-Ref.ps1 (46 lines of code) (raw):
. (Join-Path $PSScriptRoot common.ps1)
Install-Module -Name powershell-yaml -RequiredVersion 0.4.7 -Force -Scope CurrentUser
$ymlfiles = Get-ChildItem $RepoRoot -recurse | Where-Object {$_ -like '*.yml'}
$affectedRepos = [System.Collections.ArrayList]::new()
foreach ($file in $ymlfiles)
{
Write-Host "Verifying '${file}'"
$ymlContent = Get-Content $file.FullName -Raw
try
{
$ymlObject = ConvertFrom-Yaml $ymlContent -Ordered
}
catch
{
Write-Host "Skipping $($file.FullName) because the file does not contain valid yml."
continue
}
if ($ymlObject -and ($ymlObject.Contains("resources")))
{
if ($ymlObject["resources"]["repositories"])
{
$repositories = $ymlObject["resources"]["repositories"]
foreach ($repo in $repositories)
{
$repoName = $repo["repository"]
if (-not ($repo.Contains("ref")))
{
$errorMessage = "File: ${file}, Repository: ${repoName}."
[void]$affectedRepos.Add($errorMessage)
}
}
}
}
}
if ($affectedRepos.Count -gt 0)
{
Write-Output "Ref not found in the following Repository Resources."
foreach ($errorMessage in $affectedRepos)
{
Write-Output "`t$errorMessage"
}
Write-Output "Please ensure you add a Ref: when using repository resources"
Write-Output "More Info at https://aka.ms/azsdk/engsys/tools-versioning"
exit 1
}
Write-Output "All repository resources in yaml files reference a valid tag"