fix(db-*, epf-*): ошибка до запуска платформы не выдаётся за успех

Временный каталог брался из $env:TEMP, которой вне Windows нет. Join-Path
падал на привязке параметра внутри try/finally без catch: try прерывался,
finally отрабатывал, и скрипт выходил с кодом 0 — платформа не запускалась,
постусловие не проверялось (#106).

- временный каталог — [IO.Path]::GetTempPath() (на Windows тот же путь);
- верхнеуровневый trap { … exit 1 } в 15 скриптах db-*/epf-*, запускающих
  платформу: любая необработанная ошибка даёт код 1 и печатает место;
- уборка временного каталога в finally не падает на пустом пути;
- гард check-ps-portability.mjs держит оба правила.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-26 13:53:51 +03:00
co-authored by Claude Opus 5.5
parent 317dce6d9f
commit eb1796ef94
35 changed files with 233 additions and 79 deletions
@@ -1,4 +1,4 @@
# db-dump-xml v1.23 — Dump 1C configuration to XML files
# db-dump-xml v1.24 — Dump 1C configuration to XML files
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# NB: *nix-раскладку платформы (/opt/1cv8/<ver>/1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется.
<#
@@ -122,6 +122,11 @@ param(
[string[]]$AdditionalIbcmdArguments = @()
)
# Необработанная ошибка (напр. привязка параметра) внутри try/finally без catch завершала
# скрипт с кодом 0 — ложный успех без запуска платформы. Любая такая ошибка — код 1.
# py-порт: необработанное исключение и так даёт код 1.
trap { Write-Host "Error: $($_.Exception.Message) ($($_.InvocationInfo.ScriptName):$($_.InvocationInfo.ScriptLineNumber))" -ForegroundColor Red; exit 1 }
$OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
@@ -620,7 +625,7 @@ if (-not (Test-Path $ConfigDir)) {
}
# --- Temp dir ---
$tempDir = Join-Path $env:TEMP "db_dump_xml_$(Get-Random)"
$tempDir = Join-Path ([IO.Path]::GetTempPath()) "db_dump_xml_$(Get-Random)"
New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
try {
@@ -782,7 +787,7 @@ try {
exit $exitCode
} finally {
if (Test-Path $tempDir) {
if ($tempDir -and (Test-Path $tempDir)) {
Remove-Item -Path $tempDir -Recurse -Force -ErrorAction SilentlyContinue
}
}
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# db-dump-xml v1.23 — Dump 1C configuration to XML files
# db-dump-xml v1.24 — Dump 1C configuration to XML files
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse