Files
llm/scripts/export_1c_extension_sources.ps1
T

76 lines
2.5 KiB
PowerShell

[CmdletBinding()]
param(
[string]$DesignerPath = "C:\Program Files\1cv8\8.5.1.1236\bin\1cv8.exe",
[string]$ExpectedVersion = "8.5.1.1236",
[string]$ServerConnection = "wsr\upo_test",
[string]$Extension = "test2",
[Parameter(Mandatory = $true)]
[string]$OutputDirectory
)
$ErrorActionPreference = "Stop"
Set-StrictMode -Version Latest
if (-not (Test-Path -LiteralPath $DesignerPath -PathType Leaf)) {
throw "1C Designer executable not found: $DesignerPath"
}
$actualVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($DesignerPath).FileVersion
if ($actualVersion -ne $ExpectedVersion) {
throw "1C Designer version mismatch: expected $ExpectedVersion, found $actualVersion"
}
$resolvedOutput = [System.IO.Path]::GetFullPath($OutputDirectory)
if (Test-Path -LiteralPath $resolvedOutput) {
$existingItems = @(Get-ChildItem -LiteralPath $resolvedOutput -Force)
if ($existingItems.Count -gt 0) {
throw "Output directory must be empty: $resolvedOutput"
}
}
else {
New-Item -ItemType Directory -Path $resolvedOutput | Out-Null
}
$logPath = [System.IO.Path]::GetTempFileName()
try {
$designerArguments = @(
"DESIGNER",
"/S", $ServerConnection,
"/WA+",
"/DisableStartupMessages",
"/DisableStartupDialogs",
"/Out", $logPath,
"/DumpConfigToFiles", $resolvedOutput,
"-Extension", $Extension
)
& $DesignerPath @designerArguments
$designerExitCode = $LASTEXITCODE
$designerLog = Get-Content -LiteralPath $logPath -Raw -ErrorAction SilentlyContinue
if ($designerExitCode -ne 0) {
$details = if ($designerLog) { $designerLog.Trim() } else { "Designer did not write a diagnostic log." }
throw "1C Designer export failed with exit code ${designerExitCode}: $details"
}
$exportedFiles = @(Get-ChildItem -LiteralPath $resolvedOutput -File -Recurse)
if ($exportedFiles.Count -eq 0) {
$details = if ($designerLog) { $designerLog.Trim() } else { "No diagnostic log was written." }
throw "1C Designer reported success but exported no files: $details"
}
[pscustomobject]@{
status = "exported"
designer_version = $actualVersion
server_connection = $ServerConnection
extension = $Extension
output_directory = $resolvedOutput
exported_files = $exportedFiles.Count
access_mode = "operating_system_integrated"
} | ConvertTo-Json -Depth 3
}
finally {
if (Test-Path -LiteralPath $logPath -PathType Leaf) {
Remove-Item -LiteralPath $logPath -Force
}
}