Skip to content

Commit

Permalink
Sync eng/common directory with azure-sdk-tools for PR 2836 (Azure#23291)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>

* Update eng/common/scripts/ChangeLog-Operations.ps1

Co-authored-by: Ben Broderick Phillips <[email protected]>

* Update eng/common/scripts/ChangeLog-Operations.ps1

Co-authored-by: Ben Broderick Phillips <[email protected]>

* Update eng/common/scripts/ChangeLog-Operations.ps1

Co-authored-by: Ben Broderick Phillips <[email protected]>

* Update eng/common/scripts/ChangeLog-Operations.ps1

Co-authored-by: Ben Broderick Phillips <[email protected]>

Co-authored-by: Chidozie Ononiwu <[email protected]>
Co-authored-by: Chidozie Ononiwu (His Righteousness) <[email protected]>
Co-authored-by: Ben Broderick Phillips <[email protected]>
  • Loading branch information
4 people authored Mar 9, 2022
1 parent 06d9e7d commit 9719381
Showing 1 changed file with 76 additions and 53 deletions.
129 changes: 76 additions & 53 deletions eng/common/scripts/ChangeLog-Operations.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
if ($ForRelease -eq $True)
{
LogDebug "Verifying like it's a release build because ForRelease parameter is set to true"
return Confirm-LikeForRelease -changeLogEntry $changeLogEntry
}

$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 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
}

Expand Down Expand Up @@ -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
}

0 comments on commit 9719381

Please sign in to comment.