Private/Platform.ps1

$script:clientNetVersion = 'net8.0'
$script:serverNetVersion = 'net9.0'
$script:supportedServerRids = @(
    'win-x64'
    'osx-arm64'
    'linux-x64'
    'linux-arm64'
)
$script:moduleRootPath = "$PSScriptRoot/../"

function GetExecutableExtension() {
    if ($IsWindows) {
        '.exe'
    } else {
        ''
    }
}

function GetRid() {
    if ($IsWindows) {
        'win-x64'
    } else {
        [System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier
    }
}

function GetServerModuleName() {
    $rid = GetRid
    "GliderUI.Server.$rid"
}

function GetServerExePath($ModuleRoot) {
    $serverModulePath = GetServerModuleName
    $serverExtension = GetExecutableExtension
    if (-not [string]::IsNullOrEmpty($ModuleRoot)) {
        $serverModulePath = "$ModuleRoot/$serverModulePath"
    }

    $gliderUIVersion = GetGliderUIVersion

    $serverModule = Get-Module $serverModulePath -ListAvailable | Where-Object {
        $_.Version -eq $gliderUIVersion
    }
    if ($null -eq $serverModule) {
        Write-Warning "Server [$serverModulePath] Version [$gliderUIVersion] not installed."
        return
    }

    "$(Split-Path $serverModule.Path -Parent)/bin/$serverNetVersion/GliderUI.Server$serverExtension"
}

function WriteErrorIfRidNotSupported() {
    $rid = GetRid
    if ($supportedServerRids -contains $rid) {
        $false
    } else {
        Write-Error "Server runtime id [$rid] is not supported. Supported runtime ids are [$supportedServerRids]."
        $true
    }
}

function GetGliderUIVersion() {
    $psd1 = Join-Path $script:moduleRootPath 'GliderUI.psd1'
    $manifest = Import-PowerShellDataFile -Path $psd1
    $manifest.ModuleVersion
}