mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
Use a single source of truth for scheme defaults
Instead of duplicating defaults in `TargetScheme`, use optional values there and default in `SchemeGenerator`.
This commit is contained in:
@@ -3,19 +3,14 @@ import JSONUtilities
|
||||
import XcodeProj
|
||||
|
||||
public struct TargetScheme: Equatable {
|
||||
public static let gatherCoverageDataDefault = false
|
||||
public static let disableMainThreadCheckerDefault = false
|
||||
public static let stopOnEveryMainThreadCheckerIssueDefault = false
|
||||
public static let buildImplicitDependenciesDefault = true
|
||||
|
||||
public var testTargets: [Scheme.Test.TestTarget]
|
||||
public var configVariants: [String]
|
||||
public var gatherCoverageData: Bool
|
||||
public var gatherCoverageData: Bool?
|
||||
public var language: String?
|
||||
public var region: String?
|
||||
public var disableMainThreadChecker: Bool
|
||||
public var stopOnEveryMainThreadCheckerIssue: Bool
|
||||
public var buildImplicitDependencies: Bool
|
||||
public var disableMainThreadChecker: Bool?
|
||||
public var stopOnEveryMainThreadCheckerIssue: Bool?
|
||||
public var buildImplicitDependencies: Bool?
|
||||
public var commandLineArguments: [String: Bool]
|
||||
public var environmentVariables: [XCScheme.EnvironmentVariable]
|
||||
public var preActions: [Scheme.ExecutionAction]
|
||||
@@ -24,12 +19,12 @@ public struct TargetScheme: Equatable {
|
||||
public init(
|
||||
testTargets: [Scheme.Test.TestTarget] = [],
|
||||
configVariants: [String] = [],
|
||||
gatherCoverageData: Bool = gatherCoverageDataDefault,
|
||||
gatherCoverageData: Bool? = nil,
|
||||
language: String? = nil,
|
||||
region: String? = nil,
|
||||
disableMainThreadChecker: Bool = disableMainThreadCheckerDefault,
|
||||
stopOnEveryMainThreadCheckerIssue: Bool = stopOnEveryMainThreadCheckerIssueDefault,
|
||||
buildImplicitDependencies: Bool = buildImplicitDependenciesDefault,
|
||||
disableMainThreadChecker: Bool? = nil,
|
||||
stopOnEveryMainThreadCheckerIssue: Bool? = nil,
|
||||
buildImplicitDependencies: Bool? = nil,
|
||||
commandLineArguments: [String: Bool] = [:],
|
||||
environmentVariables: [XCScheme.EnvironmentVariable] = [],
|
||||
preActions: [Scheme.ExecutionAction] = [],
|
||||
@@ -67,12 +62,12 @@ extension TargetScheme: JSONObjectConvertible {
|
||||
testTargets = []
|
||||
}
|
||||
configVariants = jsonDictionary.json(atKeyPath: "configVariants") ?? []
|
||||
gatherCoverageData = jsonDictionary.json(atKeyPath: "gatherCoverageData") ?? TargetScheme.gatherCoverageDataDefault
|
||||
gatherCoverageData = jsonDictionary.json(atKeyPath: "gatherCoverageData")
|
||||
language = jsonDictionary.json(atKeyPath: "language")
|
||||
region = jsonDictionary.json(atKeyPath: "region")
|
||||
disableMainThreadChecker = jsonDictionary.json(atKeyPath: "disableMainThreadChecker") ?? TargetScheme.disableMainThreadCheckerDefault
|
||||
stopOnEveryMainThreadCheckerIssue = jsonDictionary.json(atKeyPath: "stopOnEveryMainThreadCheckerIssue") ?? TargetScheme.stopOnEveryMainThreadCheckerIssueDefault
|
||||
buildImplicitDependencies = jsonDictionary.json(atKeyPath: "buildImplicitDependencies") ?? TargetScheme.buildImplicitDependenciesDefault
|
||||
disableMainThreadChecker = jsonDictionary.json(atKeyPath: "disableMainThreadChecker")
|
||||
stopOnEveryMainThreadCheckerIssue = jsonDictionary.json(atKeyPath: "stopOnEveryMainThreadCheckerIssue")
|
||||
buildImplicitDependencies = jsonDictionary.json(atKeyPath: "buildImplicitDependencies")
|
||||
commandLineArguments = jsonDictionary.json(atKeyPath: "commandLineArguments") ?? [:]
|
||||
environmentVariables = try XCScheme.EnvironmentVariable.parseAll(jsonDictionary: jsonDictionary)
|
||||
preActions = jsonDictionary.json(atKeyPath: "preActions") ?? []
|
||||
@@ -91,19 +86,19 @@ extension TargetScheme: JSONEncodable {
|
||||
"postActions": postActions.map { $0.toJSONValue() },
|
||||
]
|
||||
|
||||
if gatherCoverageData != TargetScheme.gatherCoverageDataDefault {
|
||||
if let gatherCoverageData = gatherCoverageData {
|
||||
dict["gatherCoverageData"] = gatherCoverageData
|
||||
}
|
||||
|
||||
if disableMainThreadChecker != TargetScheme.disableMainThreadCheckerDefault {
|
||||
if let disableMainThreadChecker = disableMainThreadChecker {
|
||||
dict["disableMainThreadChecker"] = disableMainThreadChecker
|
||||
}
|
||||
|
||||
if stopOnEveryMainThreadCheckerIssue != TargetScheme.stopOnEveryMainThreadCheckerIssueDefault {
|
||||
if let stopOnEveryMainThreadCheckerIssue = stopOnEveryMainThreadCheckerIssue {
|
||||
dict["stopOnEveryMainThreadCheckerIssue"] = stopOnEveryMainThreadCheckerIssue
|
||||
}
|
||||
|
||||
if buildImplicitDependencies != TargetScheme.buildImplicitDependenciesDefault {
|
||||
if let buildImplicitDependencies = buildImplicitDependencies {
|
||||
dict["buildImplicitDependencies"] = buildImplicitDependencies
|
||||
}
|
||||
|
||||
|
||||
@@ -314,7 +314,7 @@ extension Scheme {
|
||||
name: name,
|
||||
build: .init(
|
||||
targets: Scheme.buildTargets(for: target, project: project),
|
||||
buildImplicitDependencies: targetScheme.buildImplicitDependencies,
|
||||
buildImplicitDependencies: targetScheme.buildImplicitDependencies ?? Build.buildImplicitDependenciesDefault,
|
||||
preActions: targetScheme.preActions,
|
||||
postActions: targetScheme.postActions
|
||||
),
|
||||
@@ -322,15 +322,15 @@ extension Scheme {
|
||||
config: debugConfig,
|
||||
commandLineArguments: targetScheme.commandLineArguments,
|
||||
environmentVariables: targetScheme.environmentVariables,
|
||||
disableMainThreadChecker: targetScheme.disableMainThreadChecker,
|
||||
stopOnEveryMainThreadCheckerIssue: targetScheme.stopOnEveryMainThreadCheckerIssue,
|
||||
disableMainThreadChecker: targetScheme.disableMainThreadChecker ?? Run.disableMainThreadCheckerDefault,
|
||||
stopOnEveryMainThreadCheckerIssue: targetScheme.stopOnEveryMainThreadCheckerIssue ?? Run.stopOnEveryMainThreadCheckerIssueDefault,
|
||||
language: targetScheme.language,
|
||||
region: targetScheme.region
|
||||
),
|
||||
test: .init(
|
||||
config: debugConfig,
|
||||
gatherCoverageData: targetScheme.gatherCoverageData,
|
||||
disableMainThreadChecker: targetScheme.disableMainThreadChecker,
|
||||
gatherCoverageData: targetScheme.gatherCoverageData ?? Test.gatherCoverageDataDefault,
|
||||
disableMainThreadChecker: targetScheme.disableMainThreadChecker ?? Test.disableMainThreadCheckerDefault,
|
||||
commandLineArguments: targetScheme.commandLineArguments,
|
||||
targets: targetScheme.testTargets,
|
||||
environmentVariables: targetScheme.environmentVariables,
|
||||
|
||||
Reference in New Issue
Block a user