internal/functions/Update-PuppetModuleChangelog.ps1
function Update-PuppetModuleChangelog { <# .SYNOPSIS Update Puppet module changelog via the PowerShell Module .DESCRIPTION Update Puppet module changelog via PowerShell Module Manifest's release notes or changelog file. .PARAMETER PuppetModuleFolderPath The path to the root folder of the Puppet module. .PARAMETER PowerShellModuleManifestPath The full path to the PowerShell module's manifest file. .PARAMETER Confirm Prompts for confirmation before overwriting the file .PARAMETER WhatIf Shows what would happen if the function runs. .EXAMPLE Update-PuppetModulechangelog -PuppetModuleFolderPath ./import/powershellget -PowerShellModuleManifestPath ./mymodule.psd1 This command will update `./import/powershellget/CHANGELOG.md` based on the the release notes in `./mymodule.psd1`; if no release notes can be found, it will look for a changelog file in the same path and use that instead; if neither the changelog nor release notes can be found, the changelog will remain untouched. #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')] param ( [string]$PowerShellModuleManifestPath, [string]$PuppetModuleFolderPath ) begin { Try { $PuppetChangelogFilePath = Resolve-Path (Join-Path $PuppetModuleFolderPath "CHANGELOG.md") -ErrorAction Stop $PowerShellModuleManifestPath = Resolve-Path -Path $PowerShellModuleManifestPath -ErrorAction Stop $PowerShellModuleChangelogPath = Resolve-Path -Path (Join-Path (Split-Path -Parent $PowerShellModuleManifestPath) 'CHANGELOG.md') -ErrorAction SilentlyContinue $PowerShellMetadata = Import-PSFPowerShellDataFile -Path $PowerShellModuleManifestPath -ErrorAction Stop } Catch { # Rethrow any exceptions from the above commands $PSCmdlet.ThrowTerminatingError($PSItem) } } process { If ([string]::IsNullOrEmpty($PowerShellModuleChangelogPath)) { $ReleaseNotes = $PowerShellMetadata.PrivateData.PSData.ReleaseNotes If ($ReleaseNotes.length -gt 0) { $ChangelogContent = $ReleaseNotes } } Else { $ChangelogContent = Get-Content $PowerShellModuleChangelogPath } If ($ChangelogContent) { If ($PSCmdlet.ShouldProcess($PuppetChangelogFilePath, "Overwrite Puppet Module Changelog")) { Out-Utf8File -Path $PuppetChangelogFilePath -InputObject $ChangelogContent } } } end {} } |