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:
Brentley Jones
2020-04-13 13:55:51 -05:00
parent d27e8cca9d
commit 1b07c8ce64
2 changed files with 21 additions and 26 deletions
+16 -21
View File
@@ -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
}
+5 -5
View File
@@ -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,