Functions/Test-IBHChangeLogVersion.ps1

<#
    .SYNOPSIS
        Test if the change log contains the specified version and release date.
 
    .DESCRIPTION
        This function will search in the CHANGELOG.md for the headline level 2
        with the following format: '## 1.0.0 - 2019-10-09'. If the headline was
        found, it will return $true. If not, $false is returned.
 
    .OUTPUTS
        System.Boolean. The test result.
 
    .EXAMPLE
        PS C:\> Test-IBHChangeLogVersion -BuildRoot 'C:\GitHub\InvokeBuildHelper' -ModuleVersion '1.0.0' -ReleaseDate [DateTime]::now()
        Test if the version 1.0.0 with the release date of today is registered
        in the change log.
 
    .LINK
        https://github.com/claudiospizzi/InvokeBuildHelper
#>

function Test-IBHChangeLogVersion
{
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        # Root path of the project.
        [Parameter(Mandatory = $true)]
        [System.String]
        $BuildRoot,

        # The version to test.
        [Parameter(Mandatory = $true)]
        [System.String]
        $ModuleVersion,

        # The release date to test.
        [Parameter(Mandatory = $true)]
        [System.DateTime]
        $ReleaseDate
    )

    $path    = Join-Path -Path $BuildRoot -ChildPath 'CHANGELOG.md'
    $content = Get-Content -Path $path -Raw

    $moduleVersionEscaped = [System.Text.RegularExpressions.Regex]::Escape($ModuleVersion)
    $releaseDateEscaped   = [System.Text.RegularExpressions.Regex]::Escape('{0:yyyy-MM-dd}' -f $ReleaseDate)

    $result = $content -match "## $moduleVersionEscaped - $releaseDateEscaped"

    return $result
}