Add UI Toolkit capture request contract
This commit is contained in:
parent
23f0d1e5ca
commit
b1ed4c470d
2 changed files with 45 additions and 1 deletions
|
|
@ -207,7 +207,8 @@
|
|||
"publishProof": "Unity editor or batchmode capture artifact is attached to the runtime conformance report from EveUnity."
|
||||
},
|
||||
"evidencePaths": [
|
||||
"packages/org.gamecult.eve.unity-uitoolkit/eve-runtime-capability.json"
|
||||
"packages/org.gamecult.eve.unity-uitoolkit/eve-runtime-capability.json",
|
||||
"scripts/build-uitoolkit-capture-request.ps1"
|
||||
],
|
||||
"pendingProofs": [
|
||||
"Unity batchmode or editor capture artifact attached to the runtime conformance report."
|
||||
|
|
|
|||
43
scripts/build-uitoolkit-capture-request.ps1
Normal file
43
scripts/build-uitoolkit-capture-request.ps1
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string] $AdvertisementPath,
|
||||
[string] $SurfaceId = "",
|
||||
[string] $OutputPath = "artifacts\uitoolkit-capture\request.json",
|
||||
[string] $Stamp = "latest"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$repoRoot = Split-Path -Parent $PSScriptRoot
|
||||
$capabilityPath = Join-Path $repoRoot "packages\org.gamecult.eve.unity-uitoolkit\eve-runtime-capability.json"
|
||||
$capability = Get-Content -Raw $capabilityPath | ConvertFrom-Json
|
||||
$advertisement = Get-Content -Raw $AdvertisementPath | ConvertFrom-Json
|
||||
$contract = $capability.lifecycle.capture.captureContract
|
||||
$surface = @($advertisement.surfaces) | Where-Object {
|
||||
([string]::IsNullOrWhiteSpace($SurfaceId) -or $_.surfaceId -eq $SurfaceId) -and
|
||||
@($_.worldInteraction.loweringTargets) -contains $contract.targetId
|
||||
} | Select-Object -First 1
|
||||
|
||||
if ($null -eq $surface) {
|
||||
throw "Provider does not advertise a $($contract.targetId) surface: $SurfaceId"
|
||||
}
|
||||
|
||||
$absoluteOutput = if ([IO.Path]::IsPathRooted($OutputPath)) { $OutputPath } else { Join-Path $repoRoot $OutputPath }
|
||||
$request = [ordered]@{
|
||||
schema = $contract.requestSchema
|
||||
ownerRepo = $contract.ownerRepo
|
||||
runtimeId = $contract.runtimeId
|
||||
targetId = $contract.targetId
|
||||
providerId = $advertisement.providerId
|
||||
surfaceId = $surface.surfaceId
|
||||
projectionKind = $surface.worldInteraction.projectionKind
|
||||
commandBoundary = $surface.worldInteraction.commandBoundary
|
||||
receiptSchema = $surface.worldInteraction.receiptSchema
|
||||
captureKind = $contract.captureKind
|
||||
artifactKind = $contract.artifactKind
|
||||
artifactPath = $contract.artifactPattern.Replace('{stamp}', $Stamp)
|
||||
sourceAdvertisementPath = $AdvertisementPath
|
||||
}
|
||||
|
||||
New-Item -ItemType Directory -Force -Path (Split-Path -Parent $absoluteOutput) | Out-Null
|
||||
$request | ConvertTo-Json -Depth 16 | Set-Content -LiteralPath $absoluteOutput
|
||||
Write-Host $absoluteOutput
|
||||
Reference in a new issue