Include si sistemul de depanare/testare headless din Teste\ (harness UI cu capturi, verificare de sintaxa prin compilare, wrappere text<->binar) si docs\depanare_testare_flora2roa.md.
50 lines
2.0 KiB
PowerShell
50 lines
2.0 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Scrie inapoi in proiect binarele VFP (.scx+.sct / .vcx+.vct) regenerate din textul editat.
|
|
|
|
.DESCRIPTION
|
|
Wrapper peste D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1 cu parametrii FLORA2ROA. Flux in-arbore:
|
|
textul .sc2/.vc2 sta LANGA binar, deci -CacheRoot = radacina proiectului.
|
|
|
|
Regenereaza in staging, face fidelity check (bin -> text, comparat pe octeti) si abia apoi
|
|
copiaza peste binarul din proiect. Refuza daca binarul e blocat (IDE sau flora2roa.exe
|
|
deschis) sau daca e mai nou decat textul (fara -Force).
|
|
|
|
Editarea textului se face byte-safe, in Windows-1252:
|
|
$t = [IO.File]::ReadAllText($p, [Text.Encoding]::GetEncoding(1252))
|
|
[IO.File]::WriteAllText($p, $t, [Text.Encoding]::GetEncoding(1252))
|
|
NU cu tool-uri care scriu UTF-8: corup diacriticele din TOT fisierul.
|
|
Vezi COMUN\docs\flux-editare-vfp-text.md si conventie_encoding_cp1252.md.
|
|
|
|
Dupa write-back binarul e modificat in SVN: se comite in SVN doar cu acordul utilizatorului.
|
|
|
|
.PARAMETER TextFile
|
|
Unul sau mai multe fisiere .sc2/.vc2 din arbore (ex. frm_import.sc2).
|
|
|
|
.EXAMPLE
|
|
powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2 -DryRun
|
|
|
|
.EXAMPLE
|
|
powershell -ExecutionPolicy Bypass -File Teste\bin_din_text.ps1 -TextFile frm_import.sc2
|
|
#>
|
|
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory=$true)][string[]]$TextFile,
|
|
[string]$ProjectRoot,
|
|
[switch]$Force,
|
|
[switch]$NoVerify,
|
|
[switch]$DryRun
|
|
)
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
if (-not $ProjectRoot) { $ProjectRoot = Split-Path $PSScriptRoot -Parent }
|
|
$tool = 'D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1'
|
|
if (-not (Test-Path $tool)) { throw "Nu gasesc $tool (tooling-ul partajat FoxBin2Prg)." }
|
|
|
|
$TextFile = $TextFile | ForEach-Object { if ([IO.Path]::IsPathRooted($_)) { $_ } else { Join-Path $ProjectRoot $_ } }
|
|
|
|
# flux in-arbore: CacheRoot = ProjectRoot (maparea text->binar devine identitate)
|
|
& $tool -TextFile $TextFile -ProjectRoot $ProjectRoot -CacheRoot $ProjectRoot `
|
|
-Force:$Force -NoVerify:$NoVerify -DryRun:$DryRun
|
|
exit $LASTEXITCODE
|