Files
Wand-Enhancer/scripts/get-changelog-section.ps1
kitbyte 13759b1db6 feat: ship 1.0.8.0 release automation and runtime overhaul
- reduce ASAR IO overhead with streamed archive reads, buffered copies, faster relative-path handling and placeholder integrity records
- fix in-place app.asar.unpacked packing/extraction self-copy cases that caused locked-file failures
- tighten JS patch discovery with candidate bundle filters and search hints
- require prebuilt remote-panel dist artifacts and clean up embedded bridge/script packaging
- add unified build entrypoints for PowerShell, cmd and bash and move native CMake output under .tmp
- add release metadata validation, changelog section extraction, pre-commit hook and GitHub Actions validation/release pipelines
- make CHANGELOG the source of truth for release notes and document the tag-driven release flow
- add updater release notes UI with latest/full changelog loading and localize the new update strings
- modularize bridge renderer scripts, add installed apps and game status sync, and support remote launch/stop commands
- centralize bridge protocol, IPC and WebSocket constants and improve LAN IP selection for QR pairing
- refactor remote panel controls/state enums, persist accent color, polish library/session UI and refresh assets
2026-05-06 13:07:09 +03:00

81 lines
2.0 KiB
PowerShell

param(
[Parameter(Mandatory = $true)]
[string]$Version,
[string]$OutputPath
)
$ErrorActionPreference = 'Stop'
Set-StrictMode -Version Latest
$repoRoot = Split-Path -Parent $PSScriptRoot
$changelogPath = Join-Path $repoRoot 'CHANGELOG.md'
function Normalize-Version {
param([string]$Value)
if ([string]::IsNullOrWhiteSpace($Value)) {
throw 'Version value cannot be empty.'
}
return $Value.Trim().TrimStart('v', 'V')
}
function Get-ChangelogSection {
param(
[string]$Content,
[string]$TargetVersion
)
$normalizedTargetVersion = Normalize-Version $TargetVersion
$normalizedContent = $Content -replace "`r`n", "`n" -replace "`r", "`n"
$lines = $normalizedContent -split "`n"
$builder = New-Object System.Text.StringBuilder
$isInsideSection = $false
foreach ($line in $lines) {
$match = [regex]::Match($line, '^##\s+\[(?<version>[^\]]+)\]')
if ($match.Success) {
if ($isInsideSection) {
break
}
$isInsideSection = (Normalize-Version $match.Groups['version'].Value) -eq $normalizedTargetVersion
continue
}
if (-not $isInsideSection) {
continue
}
[void]$builder.AppendLine($line)
}
return $builder.ToString().Trim()
}
if (-not (Test-Path $changelogPath)) {
throw "CHANGELOG.md not found: $changelogPath"
}
$changelogContent = Get-Content -Path $changelogPath -Raw
$section = Get-ChangelogSection -Content $changelogContent -TargetVersion $Version
if ([string]::IsNullOrWhiteSpace($section)) {
throw "Changelog section for version '$(Normalize-Version $Version)' was not found in CHANGELOG.md."
}
if ([string]::IsNullOrWhiteSpace($OutputPath)) {
Write-Output $section
exit 0
}
$resolvedOutputPath = if ([System.IO.Path]::IsPathRooted($OutputPath)) {
$OutputPath
}
else {
Join-Path $repoRoot $OutputPath
}
Set-Content -Path $resolvedOutputPath -Value $section -Encoding utf8
Write-Host "Wrote changelog section to $resolvedOutputPath"