[CmdletBinding()] param() $ErrorActionPreference = 'Stop' $outputPath = Join-Path $PSScriptRoot 'setprotocol.html' $sourcePath = Join-Path $PSScriptRoot '..\c\set-protocol\docs\SETPROTOCOL.md' $markdown = Get-Content -Raw -LiteralPath $sourcePath -Encoding UTF8 $html = (ConvertFrom-Markdown -InputObject $markdown).Html $generatedBlock = @"
$html
"@ $page = Get-Content -Raw -LiteralPath $outputPath -Encoding UTF8 $pattern = '(?s).*?' if ($page -notmatch $pattern) { throw 'Не найдены маркеры SETPROTOCOL:START/END в doc/setprotocol.html.' } $page = [regex]::Replace($page, $pattern, [System.Text.RegularExpressions.MatchEvaluator]{ param($match) $generatedBlock }, 1) $page = $page.TrimEnd("`r", "`n") + [Environment]::NewLine $utf8WithoutBom = [System.Text.UTF8Encoding]::new($false) [System.IO.File]::WriteAllText($outputPath, $page, $utf8WithoutBom) Write-Host "[DONE] SETProtocol HTML: $outputPath"