scripts/update-version.ps1 (71 lines of code) (raw):
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 Update-ReleaseNotes([System.IO.FileInfo]$XmlFile, [string]$Content, [string]$Version)
{
[Xml]$XmlContent = Get-Content $XmlFile
$NewChild = New-Object System.Xml.XmlDocument
$NewChild.LoadXml($Content.Replace('%Version%', $Version))
$Node = $XmlContent.SelectSingleNode('/document/body/section')
$Node.PrependChild($XmlContent.ImportNode($NewChild.DocumentElement, $true))
"$($XmlFile): $NewVersion"
$XmlContent.Save($XmlFile)
}
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-XmlVersion $PSScriptRoot/../src/log4net/log4net.csproj $NewVersion '/Project/PropertyGroup/Version'
$ReleaseNoteSection = '
<section id="a%Version%" name="%Version%">
<section id="a%Version%-breaking" name="Breaking Changes">
</section>
<br/>
Apache log4net %Version% addresses reported issues:
<section id="a%Version%-bug" name="Bug fixes">
<ul>
<li>
<a href="https://github.com/apache/logging-log4net/issues/tbd">tbd</a> (by tbd)
</li>
</ul>
</section>
<section id="a%Version%-enhancements" name="Enhancements">
<ul>
<li>
<a href="https://github.com/apache/logging-log4net/issues/tbd">tbd</a> (by tbd)
</li>
</ul>
</section>
</section>'
#Update-ReleaseNotes $PSScriptRoot/../src/site/xdoc/release/release-notes.xml $ReleaseNoteSection $NewVersion