Files
runner-images/images/macos/scripts/build/Update-XcodeSimulators.ps1
Alexey-Ayupov 69db5c6c63 [macOS] Refactor Common.Helpers (#8924)
* [macOS] Refactor Common.Helpers

* Update readme file

* Remove unnecessary double quotes

---------

Co-authored-by: Alexey Ayupov <“alexey.ayupov@akvelon.com”>
2023-12-04 12:13:08 +01:00

57 lines
2.5 KiB
PowerShell

################################################################################
## File: Update-XcodeSimulators.ps1
## Desc: Check available Xcode simulators and create missing ones
################################################################################
$ErrorActionPreference = "Stop"
Import-Module "$env:HOME/image-generation/helpers/Xcode.Helpers.psm1" -DisableNameChecking
Import-Module "$env:HOME/image-generation/software-report/SoftwareReport.Xcode.psm1" -DisableNameChecking
function Test-SimulatorInstalled {
param(
[Parameter(Mandatory)]
[string] $RuntimeId,
[Parameter(Mandatory)]
[string] $DeviceId,
[Parameter(Mandatory)]
[string] $SimulatorName,
[Parameter(Mandatory)]
[string] $XcodeVersion
)
$simctlPath = Get-XcodeToolPath -Version $XcodeVersion -ToolName "simctl"
if (-not (Test-Path $simctlPath)) {
Write-Host "Skip validating simulator '$SimulatorName [$RuntimeId]' because Xcode $XcodeVersion is not installed"
return
}
$simulatorFullNameDebug = "$SimulatorName [$RuntimeId]"
Write-Host "Checking Xcode simulator '$simulatorFullNameDebug' (Xcode $XcodeVersion)..."
# Get all available devices
[string]$rawDevicesInfo = Invoke-Expression "$simctlPath list devices --json"
$jsonDevicesInfo = ($rawDevicesInfo | ConvertFrom-Json).devices
# Checking if simulator already exists
$existingSimulator = $jsonDevicesInfo.$RuntimeId | Where-Object { $_.deviceTypeIdentifier -eq $DeviceId } | Select-Object -First 1
if ($null -eq $existingSimulator) {
Write-Host "Simulator '$simulatorFullNameDebug' is missed. Creating it..."
Invoke-Expression "$simctlPath create '$SimulatorName' '$DeviceId' '$RuntimeId'"
} elseif ($existingSimulator.name -ne $SimulatorName) {
Write-Host "Simulator '$simulatorFullNameDebug' is named incorrectly. Renaming it from '$($existingSimulator.name)' to '$SimulatorName'..."
Invoke-Expression "$simctlPath rename '$($existingSimulator.udid)' '$SimulatorName'"
} else {
Write-Host "Simulator '$simulatorFullNameDebug' is installed correctly."
}
}
# First run doesn't provide full data about devices
Get-XcodeInfoList | Out-Null
Write-Host "Validating and fixing Xcode simulators..."
Get-BrokenXcodeSimulatorsList | ForEach-Object {
Test-SimulatorInstalled -RuntimeId $_.RuntimeId -DeviceId $_.DeviceId -SimulatorName $_.SimulatorName -XcodeVersion $_.XcodeVersion
}