Скрипт синхронизации parent meta переведен на загрузку из git

This commit is contained in:
2026-04-09 10:58:18 +03:00
parent 65e3f5b48e
commit eaf84ad605
2 changed files with 16 additions and 12 deletions

View File

@@ -68,7 +68,7 @@ ACTIONS:
meta:sync-parent: meta:sync-parent:
intent: sync_dependency_moduleshortdesc_from_parent_meta intent: sync_dependency_moduleshortdesc_from_parent_meta
inputs: inputs:
- parent_meta_path - parent_meta_git_url (optional; defaults to upstream)
- Mods/DnD 5.5e AIO Russian/meta.lsx - Mods/DnD 5.5e AIO Russian/meta.lsx
plan: plan:
- read_parent_moduleinfo_fields - read_parent_moduleinfo_fields

View File

@@ -1,23 +1,27 @@
param( param(
[Parameter(Mandatory = $true)] [string]$ParentMetaUrl = "https://raw.githubusercontent.com/Yoonmoonsik/dnd55e/main/Mods/DnD2024_897914ef-5c96-053c-44af-0be823f895fe/meta.lsx",
[string]$ParentMetaPath,
[string]$TargetMetaPath = "Mods/DnD 5.5e AIO Russian/meta.lsx" [string]$TargetMetaPath = "Mods/DnD 5.5e AIO Russian/meta.lsx"
) )
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
$resolvedParentMetaPath = [System.IO.Path]::GetFullPath($ParentMetaPath)
$resolvedTargetMetaPath = [System.IO.Path]::GetFullPath($TargetMetaPath) $resolvedTargetMetaPath = [System.IO.Path]::GetFullPath($TargetMetaPath)
if (-not (Test-Path -LiteralPath $resolvedParentMetaPath)) {
throw "Parent meta.lsx was not found: '$resolvedParentMetaPath'."
}
if (-not (Test-Path -LiteralPath $resolvedTargetMetaPath)) { if (-not (Test-Path -LiteralPath $resolvedTargetMetaPath)) {
throw "Target meta.lsx was not found: '$resolvedTargetMetaPath'." throw "Target meta.lsx was not found: '$resolvedTargetMetaPath'."
} }
$parentRaw = Get-Content -LiteralPath $resolvedParentMetaPath -Raw if ([string]::IsNullOrWhiteSpace($ParentMetaUrl)) {
throw "ParentMetaUrl must not be empty."
}
try {
$parentResponse = Invoke-WebRequest -Uri $ParentMetaUrl -UseBasicParsing -TimeoutSec 60
} catch {
throw "Failed to download parent meta.lsx from '$ParentMetaUrl': $($_.Exception.Message)"
}
$parentRaw = $parentResponse.Content
$targetRaw = Get-Content -LiteralPath $resolvedTargetMetaPath -Raw $targetRaw = Get-Content -LiteralPath $resolvedTargetMetaPath -Raw
[xml]$parentXml = $parentRaw [xml]$parentXml = $parentRaw
@@ -25,7 +29,7 @@ $targetRaw = Get-Content -LiteralPath $resolvedTargetMetaPath -Raw
$parentModuleInfo = $parentXml.SelectSingleNode('/save/region/node/children/node[@id="ModuleInfo"]') $parentModuleInfo = $parentXml.SelectSingleNode('/save/region/node/children/node[@id="ModuleInfo"]')
if ($null -eq $parentModuleInfo) { if ($null -eq $parentModuleInfo) {
throw "ModuleInfo node was not found in parent meta: '$resolvedParentMetaPath'." throw "ModuleInfo node was not found in parent meta downloaded from '$ParentMetaUrl'."
} }
$requiredFields = @("Folder", "MD5", "Name", "PublishHandle", "UUID", "Version64") $requiredFields = @("Folder", "MD5", "Name", "PublishHandle", "UUID", "Version64")
@@ -34,12 +38,12 @@ $sourceValues = @{}
foreach ($field in $requiredFields) { foreach ($field in $requiredFields) {
$node = $parentModuleInfo.SelectSingleNode("attribute[@id='$field']") $node = $parentModuleInfo.SelectSingleNode("attribute[@id='$field']")
if ($null -eq $node) { if ($null -eq $node) {
throw "Required parent ModuleInfo attribute '$field' is missing in '$resolvedParentMetaPath'." throw "Required parent ModuleInfo attribute '$field' is missing in meta downloaded from '$ParentMetaUrl'."
} }
$value = $node.GetAttribute("value") $value = $node.GetAttribute("value")
if ([string]::IsNullOrWhiteSpace($value)) { if ([string]::IsNullOrWhiteSpace($value)) {
throw "Required parent ModuleInfo attribute '$field' has empty value in '$resolvedParentMetaPath'." throw "Required parent ModuleInfo attribute '$field' has empty value in meta downloaded from '$ParentMetaUrl'."
} }
$sourceValues[$field] = $value $sourceValues[$field] = $value