parseSimulators static method
Parses the JSON output of xcrun simctl list devices -j into devices.
Pure function (no I/O) so it is unit-testable on any platform.
Implementation
static List<Device> parseSimulators(String jsonStr) {
final json = jsonDecode(jsonStr) as Map<String, dynamic>;
final devicesMap = json['devices'] as Map<String, dynamic>? ?? {};
final devices = <Device>[];
for (final entry in devicesMap.entries) {
final runtime = entry.key;
final platformName = extractPlatformName(runtime);
final deviceList = entry.value as List<dynamic>;
for (final d in deviceList) {
final map = d as Map<String, dynamic>;
if (map['isAvailable'] == true) {
devices.add(
Device.ios(
id: map['udid'] as String,
name: map['name'] as String,
platform: platformName,
type: DeviceType.simulator,
state: DeviceState.fromString(
map['state'] as String? ?? DeviceState.shutdown.label,
),
),
);
}
}
}
return devices;
}