Initial: flux text FoxBin2Prg (git urmareste .??2 in-arbore, binarele VFP git-ignored)
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.
This commit is contained in:
49
Teste/bin_din_text.ps1
Normal file
49
Teste/bin_din_text.ps1
Normal file
@@ -0,0 +1,49 @@
|
||||
<#
|
||||
.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
|
||||
Reference in New Issue
Block a user