From 1b07c8ce644eaf63615bde4bc7cddbb1570c32e0 Mon Sep 17 00:00:00 2001 From: Brentley Jones Date: Mon, 13 Apr 2020 11:30:18 -0500 Subject: [PATCH] Use a single source of truth for scheme defaults Instead of duplicating defaults in `TargetScheme`, use optional values there and default in `SchemeGenerator`. --- Sources/ProjectSpec/TargetScheme.swift | 37 ++++++++++------------- Sources/XcodeGenKit/SchemeGenerator.swift | 10 +++--- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/Sources/ProjectSpec/TargetScheme.swift b/Sources/ProjectSpec/TargetScheme.swift index 66ef9af3..8e3f17e3 100644 --- a/Sources/ProjectSpec/TargetScheme.swift +++ b/Sources/ProjectSpec/TargetScheme.swift @@ -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 } diff --git a/Sources/XcodeGenKit/SchemeGenerator.swift b/Sources/XcodeGenKit/SchemeGenerator.swift index b5446f61..0fa7b87d 100644 --- a/Sources/XcodeGenKit/SchemeGenerator.swift +++ b/Sources/XcodeGenKit/SchemeGenerator.swift @@ -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,