mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
buildPresets
This commit is contained in:
@@ -1,39 +0,0 @@
|
||||
//
|
||||
// BuildSetting.swift
|
||||
// XcodeGen
|
||||
//
|
||||
// Created by Yonas Kolb on 21/7/17.
|
||||
//
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import JSONUtilities
|
||||
import xcodeproj
|
||||
|
||||
public struct TargetBuildSettings: JSONObjectConvertible {
|
||||
|
||||
public let buildSettings: BuildSettings
|
||||
public let configSettings: [String: BuildSettings]
|
||||
|
||||
public init(buildSettings: BuildSettings, configSettings: [String: BuildSettings] = [:]) {
|
||||
self.buildSettings = buildSettings
|
||||
self.configSettings = configSettings
|
||||
}
|
||||
|
||||
public init(jsonDictionary: JSONDictionary) throws {
|
||||
if jsonDictionary["$base"] != nil {
|
||||
buildSettings = BuildSettings(dictionary: try jsonDictionary.json(atKeyPath: "$base"))
|
||||
var configSettings: [String: BuildSettings] = [:]
|
||||
for (key, value) in jsonDictionary {
|
||||
if key != "baseSettings", let buildSettings = value as? JSONDictionary {
|
||||
configSettings["key"] = BuildSettings(dictionary: buildSettings)
|
||||
}
|
||||
}
|
||||
self.configSettings = configSettings
|
||||
} else {
|
||||
buildSettings = BuildSettings(dictionary: jsonDictionary)
|
||||
configSettings = [:]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
//
|
||||
// BuildSettings.swift
|
||||
// XcodeGen
|
||||
//
|
||||
// Created by Yonas Kolb on 20/7/17.
|
||||
//
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import xcodeproj
|
||||
import JSONUtilities
|
||||
|
||||
public struct BuildSettingGroup {
|
||||
public var name: String
|
||||
public var buildSettings: BuildSettings
|
||||
|
||||
public init(name: String, buildSettings: BuildSettings) {
|
||||
self.name = name
|
||||
self.buildSettings = buildSettings
|
||||
}
|
||||
}
|
||||
|
||||
extension BuildSettingGroup: NamedJSONDictionaryConvertible {
|
||||
|
||||
public init(name: String, jsonDictionary: JSONDictionary) throws {
|
||||
self.name = name
|
||||
self.buildSettings = BuildSettings(dictionary: jsonDictionary)
|
||||
}
|
||||
}
|
||||
@@ -10,18 +10,25 @@ import Foundation
|
||||
import xcodeproj
|
||||
import JSONUtilities
|
||||
|
||||
public struct Config {
|
||||
public struct Config: Equatable {
|
||||
public var name: String
|
||||
public var type: ConfigType?
|
||||
public var buildSettingGroups: [BuildSettingGroup]
|
||||
public var buildSettings: BuildSettings
|
||||
public var settings: BuildSettings
|
||||
public var settingPresets: [String]
|
||||
|
||||
public init(name: String, type: ConfigType? = nil, buildSettingGroups: [BuildSettingGroup] = [], buildSettings: BuildSettings = .init()) {
|
||||
public init(name: String, type: ConfigType? = nil, settings: BuildSettings = .empty, settingPresets: [String] = []) {
|
||||
self.name = name
|
||||
self.buildSettingGroups = buildSettingGroups
|
||||
self.buildSettings = buildSettings
|
||||
self.settings = settings
|
||||
self.settingPresets = settingPresets
|
||||
self.type = type
|
||||
}
|
||||
|
||||
public static func ==(lhs: Config, rhs: Config) -> Bool {
|
||||
return lhs.name == rhs.name &&
|
||||
lhs.type == rhs.type &&
|
||||
lhs.settings == rhs.settings &&
|
||||
lhs.settingPresets == rhs.settingPresets
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +42,7 @@ extension Config: NamedJSONDictionaryConvertible {
|
||||
public init(name: String, jsonDictionary: JSONDictionary) throws {
|
||||
self.name = name
|
||||
type = jsonDictionary.json(atKeyPath: "type")
|
||||
buildSettingGroups = try jsonDictionary.json(atKeyPath: "settingGroups")
|
||||
buildSettings = BuildSettings(dictionary: jsonDictionary.json(atKeyPath: "buildSettings") ?? [:])
|
||||
settings = BuildSettings(dictionary: jsonDictionary.json(atKeyPath: "settings") ?? [:])
|
||||
settingPresets = jsonDictionary.json(atKeyPath: "settingPresets") ?? []
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// SettingPreset.swift
|
||||
// XcodeGen
|
||||
//
|
||||
// Created by Yonas Kolb on 26/7/17.
|
||||
//
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import JSONUtilities
|
||||
import xcodeproj
|
||||
|
||||
public struct SettingPreset: Equatable, CustomStringConvertible {
|
||||
public var settings: Settings
|
||||
public var settingPresets: [String]
|
||||
|
||||
public init(settings: Settings, settingPresets: [String] = []) {
|
||||
self.settings = settings
|
||||
self.settingPresets = settingPresets
|
||||
}
|
||||
|
||||
public static func ==(lhs: SettingPreset, rhs: SettingPreset) -> Bool {
|
||||
return lhs.settings == rhs.settings && lhs.settingPresets == rhs.settingPresets
|
||||
}
|
||||
|
||||
public var description: String {
|
||||
return "\(settings)\nPresets: \(settingPresets)"
|
||||
}
|
||||
}
|
||||
|
||||
public enum SettingsPresetFile {
|
||||
case config(ConfigType)
|
||||
case platform(Platform)
|
||||
case product(PBXProductType)
|
||||
case base
|
||||
|
||||
var path: String {
|
||||
switch self {
|
||||
case let .config(config): return "Configs/\(config.rawValue)"
|
||||
case let .platform(platform): return "Platforms/\(platform.rawValue)"
|
||||
case let .product(product): return "Products/\(product.rawValue)"
|
||||
case .base: return "base"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension SettingPreset: JSONObjectConvertible {
|
||||
|
||||
public init(jsonDictionary: JSONDictionary) throws {
|
||||
if jsonDictionary["settings"] == nil {
|
||||
settings = try Settings(jsonDictionary: jsonDictionary)
|
||||
settingPresets = []
|
||||
} else {
|
||||
settings = try jsonDictionary.json(atKeyPath: "settings")
|
||||
settingPresets = jsonDictionary.json(atKeyPath: "settingPresets") ?? []
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// BuildSetting.swift
|
||||
// XcodeGen
|
||||
//
|
||||
// Created by Yonas Kolb on 21/7/17.
|
||||
//
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import JSONUtilities
|
||||
import xcodeproj
|
||||
|
||||
public struct Settings: Equatable, JSONObjectConvertible, CustomStringConvertible {
|
||||
|
||||
public let buildSettings: BuildSettings
|
||||
public let configSettings: [String: BuildSettings]
|
||||
|
||||
public init(buildSettings: BuildSettings, configSettings: [String: BuildSettings] = [:]) {
|
||||
self.buildSettings = buildSettings
|
||||
self.configSettings = configSettings
|
||||
}
|
||||
|
||||
public init(dictionary: [String: Any]) {
|
||||
self.buildSettings = BuildSettings(dictionary: dictionary)
|
||||
self.configSettings = [:]
|
||||
}
|
||||
|
||||
static let empty: Settings = Settings(buildSettings: BuildSettings())
|
||||
|
||||
public init(jsonDictionary: JSONDictionary) throws {
|
||||
if let configSettings: [String: BuildSettings] = jsonDictionary.json(atKeyPath: "configs") {
|
||||
buildSettings = jsonDictionary.json(atKeyPath: "default") ?? [:]
|
||||
self.configSettings = configSettings
|
||||
} else {
|
||||
buildSettings = BuildSettings(dictionary: jsonDictionary)
|
||||
configSettings = [:]
|
||||
}
|
||||
}
|
||||
|
||||
public static func ==(lhs: Settings, rhs: Settings) -> Bool {
|
||||
return lhs.buildSettings == rhs.buildSettings && lhs.configSettings == rhs.configSettings
|
||||
}
|
||||
|
||||
public var description: String {
|
||||
var string: String = ""
|
||||
if !buildSettings.dictionary.isEmpty {
|
||||
string += buildSettings.description
|
||||
}
|
||||
for (config, buildSettings) in configSettings {
|
||||
if !buildSettings.dictionary.isEmpty {
|
||||
string += "\n\(config)\n\t" + buildSettings.description.replacingOccurrences(of: "\n", with: "\n\t")
|
||||
}
|
||||
}
|
||||
return string
|
||||
}
|
||||
}
|
||||
|
||||
extension Settings: ExpressibleByDictionaryLiteral {
|
||||
|
||||
public init(dictionaryLiteral elements: (String, Any)...) {
|
||||
var dictionary: [String: Any] = [:]
|
||||
elements.forEach { dictionary[$0.0] = $0.1 }
|
||||
self.init(dictionary: dictionary)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension BuildSettings: JSONObjectConvertible {
|
||||
|
||||
public init(jsonDictionary: JSONDictionary) throws {
|
||||
self.init(dictionary: jsonDictionary)
|
||||
}
|
||||
}
|
||||
@@ -16,23 +16,25 @@ public struct Spec {
|
||||
|
||||
public var name: String
|
||||
public var targets: [Target]
|
||||
public var settingGroups: [BuildSettingGroup]
|
||||
public var settings: Settings
|
||||
public var settingPresets: [String: SettingPreset]
|
||||
public var configs: [Config]
|
||||
public var schemes: [Scheme]
|
||||
|
||||
public init(name: String, configs: [Config] = [], targets: [Target] = [], settingGroups: [BuildSettingGroup] = [], schemes: [Scheme] = []) {
|
||||
public init(name: String, configs: [Config] = [], targets: [Target] = [], settings: Settings = .empty, settingPresets: [String: SettingPreset] = [:], schemes: [Scheme] = []) {
|
||||
self.name = name
|
||||
self.targets = targets
|
||||
self.configs = configs
|
||||
self.settingGroups = settingGroups
|
||||
self.settings = settings
|
||||
self.settingPresets = settingPresets
|
||||
self.schemes = schemes
|
||||
}
|
||||
|
||||
func getTarget(_ targetName: String) -> Target? {
|
||||
public func getTarget(_ targetName: String) -> Target? {
|
||||
return targets.first { $0.name == targetName }
|
||||
}
|
||||
|
||||
func getConfig(_ configName: String) -> Config? {
|
||||
public func getConfig(_ configName: String) -> Config? {
|
||||
return configs.first { $0.name == configName }
|
||||
}
|
||||
}
|
||||
@@ -53,7 +55,8 @@ extension Spec {
|
||||
|
||||
public init(jsonDictionary: JSONDictionary) throws {
|
||||
name = try jsonDictionary.json(atKeyPath: "name")
|
||||
settingGroups = try jsonDictionary.json(atKeyPath: "settingGroups")
|
||||
settings = jsonDictionary.json(atKeyPath: "settings") ?? .empty
|
||||
settingPresets = jsonDictionary.json(atKeyPath: "settingPresets") ?? [:]
|
||||
configs = try jsonDictionary.json(atKeyPath: "configs")
|
||||
if jsonDictionary["targets"] == nil {
|
||||
targets = []
|
||||
|
||||
@@ -14,7 +14,8 @@ public struct Target {
|
||||
public var name: String
|
||||
public var type: PBXProductType
|
||||
public var platform: Platform
|
||||
public var buildSettings: TargetBuildSettings?
|
||||
public var settings: Settings
|
||||
public var settingPresets: [String]
|
||||
public var sources: [String]
|
||||
public var sourceExludes: [String]
|
||||
public var dependencies: [Dependency]
|
||||
@@ -31,11 +32,12 @@ public struct Target {
|
||||
return name
|
||||
}
|
||||
|
||||
public init(name: String, type: PBXProductType, platform: Platform, buildSettings: TargetBuildSettings?, configs: [String: String] = [:], sources: [String] = [], sourceExludes: [String] = [], dependencies: [Dependency] = [], prebuildScripts: [String] = [], postbuildScripts: [String] = [], generateSchemes: [String] = []) {
|
||||
public init(name: String, type: PBXProductType, platform: Platform, settings: Settings = .empty, settingPresets: [String] = [], configs: [String: String] = [:], sources: [String] = [], sourceExludes: [String] = [], dependencies: [Dependency] = [], prebuildScripts: [String] = [], postbuildScripts: [String] = [], generateSchemes: [String] = []) {
|
||||
self.name = name
|
||||
self.type = type
|
||||
self.platform = platform
|
||||
self.buildSettings = buildSettings
|
||||
self.settings = settings
|
||||
self.settingPresets = settingPresets
|
||||
self.configs = configs
|
||||
self.sources = sources
|
||||
self.sourceExludes = sourceExludes
|
||||
@@ -62,7 +64,8 @@ extension Target: JSONObjectConvertible {
|
||||
} else {
|
||||
throw SpecError.unknownTargetPlatform(platformString)
|
||||
}
|
||||
buildSettings = jsonDictionary.json(atKeyPath: "buildSettings")
|
||||
settings = jsonDictionary.json(atKeyPath: "settings") ?? .empty
|
||||
settingPresets = jsonDictionary.json(atKeyPath: "settingsPresets") ?? []
|
||||
configs = jsonDictionary.json(atKeyPath: "configs") ?? [:]
|
||||
if let source: String = jsonDictionary.json(atKeyPath: "sources") {
|
||||
sources = [source]
|
||||
|
||||
Reference in New Issue
Block a user