60 lines
1.6 KiB
Swift
60 lines
1.6 KiB
Swift
import Foundation
|
|
|
|
// MARK: - Configuration
|
|
|
|
public class Configuration {
|
|
public let settings: [String: String]
|
|
public let xcconfig: String?
|
|
public init(settings: [String: String] = [:], xcconfig: String? = nil) {
|
|
self.settings = settings
|
|
self.xcconfig = xcconfig
|
|
}
|
|
|
|
public static func settings(_ settings: [String: String], xcconfig: String? = nil) -> Configuration {
|
|
return Configuration(settings: settings, xcconfig: xcconfig)
|
|
}
|
|
}
|
|
|
|
// MARK: - Settings
|
|
|
|
public class Settings {
|
|
public let base: [String: String]
|
|
public let debug: Configuration?
|
|
public let release: Configuration?
|
|
|
|
public init(base: [String: String] = [:],
|
|
debug: Configuration? = nil,
|
|
release: Configuration? = nil) {
|
|
self.base = base
|
|
self.debug = debug
|
|
self.release = release
|
|
}
|
|
}
|
|
|
|
// MARK: - Settings (JSONConvertible)
|
|
|
|
extension Settings: JSONConvertible {
|
|
func toJSON() -> JSON {
|
|
var dictionary: [String: JSON] = [:]
|
|
dictionary["base"] = base.toJSON()
|
|
if let debug = debug {
|
|
dictionary["debug"] = debug.toJSON()
|
|
}
|
|
if let release = release {
|
|
dictionary["release"] = release.toJSON()
|
|
}
|
|
return .dictionary(dictionary)
|
|
}
|
|
}
|
|
|
|
extension Configuration: JSONConvertible {
|
|
func toJSON() -> JSON {
|
|
var dictionary: [String: JSON] = [:]
|
|
if let xcconfig = xcconfig {
|
|
dictionary["xcconfig"] = xcconfig.toJSON()
|
|
}
|
|
dictionary["settings"] = settings.toJSON()
|
|
return .dictionary(dictionary)
|
|
}
|
|
}
|