|
|
@ -107,6 +107,7 @@ extension UTMScriptingConfigImpl { |
|
|
|
"drives": config.drives.map({ serializeQemuDriveExisting($0) }), |
|
|
|
"networkInterfaces": config.networks.enumerated().map({ serializeQemuNetwork($1, index: $0) }), |
|
|
|
"serialPorts": config.serials.enumerated().map({ serializeQemuSerial($1, index: $0) }), |
|
|
|
"qemuAdditionalArguments": config.qemu.additionalArguments.map({ serializeQemuAdditionalArgument($0)}), |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
@ -188,6 +189,14 @@ extension UTMScriptingConfigImpl { |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
private func serializeQemuAdditionalArgument(_ argument: QEMUArgument) -> [AnyHashable: Any] { |
|
|
|
var serializedArgument: [AnyHashable: Any] = [ |
|
|
|
"argumentString": argument.string |
|
|
|
] |
|
|
|
|
|
|
|
return serializedArgument |
|
|
|
} |
|
|
|
|
|
|
|
private func serializeAppleConfiguration(_ config: UTMAppleConfiguration) -> [AnyHashable : Any] { |
|
|
|
[ |
|
|
|
"name": config.information.name, |
|
|
@ -338,6 +347,9 @@ extension UTMScriptingConfigImpl { |
|
|
|
if let serialPorts = record["serialPorts"] as? [[AnyHashable : Any]] { |
|
|
|
try updateQemuSerials(from: serialPorts) |
|
|
|
} |
|
|
|
if let qemuAdditionalArguments = record["qemuAdditionalArguments"] as? [[AnyHashable: Any]] { |
|
|
|
try updateQemuAdditionalArguments(from: qemuAdditionalArguments) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private func parseQemuDriveInterface(_ value: AEKeyword?) -> QEMUDriveInterface? { |
|
|
@ -500,6 +512,19 @@ extension UTMScriptingConfigImpl { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private func updateQemuAdditionalArguments(from records: [[AnyHashable: Any]]) throws { |
|
|
|
let config = config as! UTMQemuConfiguration |
|
|
|
let additionalArguments = records.compactMap { record -> QEMUArgument? in |
|
|
|
guard let argumentString = record["argumentString"] as? String else { return nil } |
|
|
|
var argument = QEMUArgument(argumentString) |
|
|
|
|
|
|
|
return argument |
|
|
|
} |
|
|
|
// Update entire additional arguments with new one. |
|
|
|
config.qemu.additionalArguments = additionalArguments |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private func updateAppleConfiguration(from record: [AnyHashable : Any]) throws { |
|
|
|
let config = config as! UTMAppleConfiguration |
|
|
|
if let name = record["name"] as? String, !name.isEmpty { |
|
|
|