Sync eng/common directory with azure-sdk-tools for PR 2836 (#3388)
* Verify changelog like a release is about to take place if a vlaid date is present * Update eng/common/scripts/ChangeLog-Operations.ps1 Co-authored-by: Ben Broderick Phillips <ben@benbp.net> * Update eng/common/scripts/ChangeLog-Operations.ps1 Co-authored-by: Ben Broderick Phillips <ben@benbp.net> * Update eng/common/scripts/ChangeLog-Operations.ps1 Co-authored-by: Ben Broderick Phillips <ben@benbp.net> * Update eng/common/scripts/ChangeLog-Operations.ps1 Co-authored-by: Ben Broderick Phillips <ben@benbp.net> * Update eng/common/scripts/ChangeLog-Operations.ps1 Co-authored-by: Ben Broderick Phillips <ben@benbp.net> Co-authored-by: Chidozie Ononiwu <chononiw@microsoft.com> Co-authored-by: Chidozie Ononiwu (His Righteousness) <31145988+chidozieononiwu@users.noreply.github.com> Co-authored-by: Ben Broderick Phillips <ben@benbp.net>
This commit is contained in:
parent
60714c4641
commit
ceee07cfa1
@ -165,61 +165,20 @@ function Confirm-ChangeLogEntry {
|
||||
return $false
|
||||
}
|
||||
|
||||
if ($ForRelease -eq $True) {
|
||||
if ($changeLogEntry.ReleaseStatus -eq $CHANGELOG_UNRELEASED_STATUS) {
|
||||
LogError "Entry has no release date set. Please ensure to set a release date with format '$CHANGELOG_DATE_FORMAT'. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
return $false
|
||||
}
|
||||
else {
|
||||
$status = $changeLogEntry.ReleaseStatus.Trim().Trim("()")
|
||||
try {
|
||||
$releaseDate = [DateTime]$status
|
||||
if ($status -ne ($releaseDate.ToString($CHANGELOG_DATE_FORMAT)))
|
||||
{
|
||||
LogError "Date must be in the format $($CHANGELOG_DATE_FORMAT). See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
return $false
|
||||
}
|
||||
if (((Get-Date).AddMonths(-1) -gt $releaseDate) -or ($releaseDate -gt (Get-Date).AddMonths(1)))
|
||||
{
|
||||
LogError "The date must be within +/- one month from today. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
return $false
|
||||
}
|
||||
}
|
||||
catch {
|
||||
LogError "Invalid date [ $status ] passed as status for Version [$($changeLogEntry.ReleaseVersion)]. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
if ([System.String]::IsNullOrWhiteSpace($changeLogEntry.ReleaseContent)) {
|
||||
LogError "Entry has no content. Please ensure to provide some content of what changed in this version. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
return $false
|
||||
}
|
||||
|
||||
$foundRecomendedSection = $false
|
||||
$emptySections = @()
|
||||
foreach ($key in $changeLogEntry.Sections.Keys)
|
||||
{
|
||||
$sectionContent = $changeLogEntry.Sections[$key]
|
||||
if ([System.String]::IsNullOrWhiteSpace(($sectionContent | Out-String)))
|
||||
{
|
||||
$emptySections += $key
|
||||
}
|
||||
if ($RecommendedSectionHeaders -contains $key)
|
||||
{
|
||||
$foundRecomendedSection = $true
|
||||
}
|
||||
}
|
||||
if ($emptySections.Count -gt 0)
|
||||
{
|
||||
LogError "The changelog entry has the following sections with no content ($($emptySections -join ', ')). Please ensure to either remove the empty sections or add content to the section."
|
||||
return $false
|
||||
}
|
||||
if (!$foundRecomendedSection)
|
||||
{
|
||||
LogWarning "The changelog entry did not contain any of the recommended sections ($($RecommendedSectionHeaders -join ', ')), pease add at least one. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
}
|
||||
if ($ForRelease -eq $True)
|
||||
{
|
||||
LogDebug "Verifying like it's a release build because ForRelease parameter is set to true"
|
||||
return Confirm-LikeForRelease -changeLogEntry $changeLogEntry
|
||||
}
|
||||
|
||||
# If the release status is a valid date then verify like its about to be released
|
||||
$status = $changeLogEntry.ReleaseStatus.Trim().Trim("()")
|
||||
if ($status -as [DateTime])
|
||||
{
|
||||
LogDebug "Verifying like it's a release build because the changelog entry has a valid date."
|
||||
return Confirm-LikeForRelease -changeLogEntry $changeLogEntry
|
||||
}
|
||||
|
||||
return $true
|
||||
}
|
||||
|
||||
@ -362,4 +321,68 @@ function Get-LatestReleaseDateFromChangeLog
|
||||
$changeLogEntries = Get-ChangeLogEntries -ChangeLogLocation $ChangeLogLocation
|
||||
$latestVersion = $changeLogEntries[0].ReleaseStatus.Trim("()")
|
||||
return ($latestVersion -as [DateTime])
|
||||
}
|
||||
|
||||
function Confirm-LikeForRelease {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
$changeLogEntry
|
||||
)
|
||||
|
||||
$isValid = $true
|
||||
if ($changeLogEntry.ReleaseStatus -eq $CHANGELOG_UNRELEASED_STATUS) {
|
||||
LogError "Entry has no release date set. Please ensure to set a release date with format '$CHANGELOG_DATE_FORMAT'. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
$isValid = $false
|
||||
}
|
||||
else {
|
||||
$status = $changeLogEntry.ReleaseStatus.Trim().Trim("()")
|
||||
try {
|
||||
$releaseDate = [DateTime]$status
|
||||
if ($status -ne ($releaseDate.ToString($CHANGELOG_DATE_FORMAT)))
|
||||
{
|
||||
LogError "Date must be in the format $($CHANGELOG_DATE_FORMAT). See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
$isValid = $false
|
||||
}
|
||||
if (((Get-Date).AddMonths(-1) -gt $releaseDate) -or ($releaseDate -gt (Get-Date).AddMonths(1)))
|
||||
{
|
||||
LogError "The date must be within +/- one month from today. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
$isValid = $false
|
||||
}
|
||||
}
|
||||
catch {
|
||||
LogError "Invalid date [ $status ] passed as status for Version [$($changeLogEntry.ReleaseVersion)]. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
$isValid = $false
|
||||
}
|
||||
}
|
||||
|
||||
if ([System.String]::IsNullOrWhiteSpace($changeLogEntry.ReleaseContent)) {
|
||||
LogError "Entry has no content. Please ensure to provide some content of what changed in this version. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
$isValid = $false
|
||||
}
|
||||
|
||||
$foundRecommendedSection = $false
|
||||
$emptySections = @()
|
||||
foreach ($key in $changeLogEntry.Sections.Keys)
|
||||
{
|
||||
$sectionContent = $changeLogEntry.Sections[$key]
|
||||
if ([System.String]::IsNullOrWhiteSpace(($sectionContent | Out-String)))
|
||||
{
|
||||
$emptySections += $key
|
||||
}
|
||||
if ($RecommendedSectionHeaders -contains $key)
|
||||
{
|
||||
$foundRecommendedSection = $true
|
||||
}
|
||||
}
|
||||
if ($emptySections.Count -gt 0)
|
||||
{
|
||||
LogError "The changelog entry has the following sections with no content ($($emptySections -join ', ')). Please ensure to either remove the empty sections or add content to the section."
|
||||
$isValid = $false
|
||||
}
|
||||
if (!$foundRecommendedSection)
|
||||
{
|
||||
LogWarning "The changelog entry did not contain any of the recommended sections ($($RecommendedSectionHeaders -join ', ')), please add at least one. See https://aka.ms/azsdk/guideline/changelogs for more info."
|
||||
}
|
||||
Write-Host "Changelog validation failed. Please fix errors above and try again."
|
||||
return $isValid
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user