blob: fd9329e2b7df10993158cbc5f657d876d15f67b8 [file]
Param (
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]$OldVersion,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]$NewVersion
)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
function Update-XmlVersion([System.IO.FileInfo]$XmlFile, [string]$Version, [string]$NodePath)
{
[Xml]$XmlContent = Get-Content $XmlFile
$Node = $XmlContent.SelectSingleNode($NodePath)
$Node.InnerText = $Version
"$($Node.OuterXml)"
$XmlContent.Save($XmlFile)
}
function Update-JsonVersion([System.IO.FileInfo]$JsonFile, [string]$Version)
{
$JsonContent = Get-Content $JsonFile | ConvertFrom-Json
$JsonContent.version = $Version
"$($JsonFile): $($JsonContent.version)"
$JsonContent | ConvertTo-Json | Out-File $JsonFile
}
function Update-TextVersion([System.IO.FileInfo]$TextFile, [string]$OldVersion, [string]$NewVersion)
{
$OldContent = Get-Content $TextFile | Out-String
$NewContent = $OldContent.Replace($OldVersion, $NewVersion)
"$($TextFile): $NewVersion"
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllText($TextFile, $NewContent, $Utf8NoBomEncoding)
}
function New-ReleaseNotes([string]$Content, [string]$Version)
{
[System.IO.FileInfo]$XmlFile = "$PSScriptRoot/../src/changelog/$Version/.release.xml"
$XmlFile.Directory.Create()
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllText($XmlFile, $Content, $Utf8NoBomEncoding)
Copy-Item "$PSScriptRoot/../src/changelog/3.1.0/.release-notes.adoc.ftl" "$PSScriptRoot/../src/changelog/$Version/.release-notes.adoc.ftl"
}
Update-XmlVersion $PSScriptRoot/../pom.xml $NewVersion '/*[local-name()="project"]/*[local-name()="version"]'
Update-JsonVersion $PSScriptRoot/../package.json $NewVersion
Update-TextVersion $PSScriptRoot/../doc/MailTemplate.txt $OldVersion $NewVersion
Update-TextVersion $PSScriptRoot/../doc/MailTemplate.Result.txt $OldVersion $NewVersion
Update-TextVersion $PSScriptRoot/../doc/MailTemplate.Announce.txt $OldVersion $NewVersion
Update-TextVersion $PSScriptRoot/build-preview.ps1 $OldVersion $NewVersion
Update-TextVersion $PSScriptRoot/build-release.ps1 $OldVersion $NewVersion
Update-XmlVersion $PSScriptRoot/../src/Directory.Build.props $NewVersion '/Project/PropertyGroup/VersionPrefix'
Update-XmlVersion $PSScriptRoot/../src/Directory.Build.props $OldVersion '/Project/PropertyGroup/Log4NetPackageVersion'
Update-XmlVersion $PSScriptRoot/../examples/Directory.Build.props $OldVersion '/Project/PropertyGroup/Version'
Update-TextVersion $PSScriptRoot/../src/site/antora/modules/ROOT/partials/supported-versions.adoc $OldVersion $NewVersion
$ReleaseNoteXml = '<?xml version="1.0" encoding="UTF-8"?>
<release xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://logging.apache.org/xml/ns"
xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
date="~Date~"
version="~Version~"/>'.Replace('~Version~', $NewVersion).Replace('~Date~', (Get-Date).AddMonths(2).ToString('yyyy-MM-dd'))
New-ReleaseNotes $ReleaseNoteXml $NewVersion