mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
57 lines
2.0 KiB
Swift
57 lines
2.0 KiB
Swift
import Foundation
|
|
import JSONUtilities
|
|
import XcodeProj
|
|
|
|
extension XCScheme.EnvironmentVariable: JSONObjectConvertible {
|
|
public static let enabledDefault = true
|
|
|
|
private static func parseValue(_ value: Any) -> String {
|
|
if let bool = value as? Bool {
|
|
return bool ? "YES" : "NO"
|
|
} else {
|
|
return String(describing: value)
|
|
}
|
|
}
|
|
|
|
public init(jsonDictionary: JSONDictionary) throws {
|
|
|
|
let value: String
|
|
if let jsonValue = jsonDictionary["value"] {
|
|
value = XCScheme.EnvironmentVariable.parseValue(jsonValue)
|
|
} else {
|
|
// will throw error
|
|
value = try jsonDictionary.json(atKeyPath: "value")
|
|
}
|
|
let variable: String = try jsonDictionary.json(atKeyPath: "variable")
|
|
let enabled: Bool = jsonDictionary.json(atKeyPath: "isEnabled") ?? XCScheme.EnvironmentVariable.enabledDefault
|
|
self.init(variable: variable, value: value, enabled: enabled)
|
|
}
|
|
|
|
static func parseAll(jsonDictionary: JSONDictionary) throws -> [XCScheme.EnvironmentVariable] {
|
|
if let variablesDictionary: [String: Any] = jsonDictionary.json(atKeyPath: "environmentVariables") {
|
|
return variablesDictionary.mapValues(parseValue)
|
|
.map { XCScheme.EnvironmentVariable(variable: $0.key, value: $0.value, enabled: true) }
|
|
.sorted { $0.variable < $1.variable }
|
|
} else if let variablesArray: [JSONDictionary] = jsonDictionary.json(atKeyPath: "environmentVariables") {
|
|
return try variablesArray.map(XCScheme.EnvironmentVariable.init)
|
|
} else {
|
|
return []
|
|
}
|
|
}
|
|
}
|
|
|
|
extension XCScheme.EnvironmentVariable: JSONEncodable {
|
|
public func toJSONValue() -> Any {
|
|
var dict: [String: Any] = [
|
|
"variable": variable,
|
|
"value": value,
|
|
]
|
|
|
|
if enabled != XCScheme.EnvironmentVariable.enabledDefault {
|
|
dict["isEnabled"] = enabled
|
|
}
|
|
|
|
return dict
|
|
}
|
|
}
|