From 322bbd58937b99987d05627afd0dc6376ebf1d78 Mon Sep 17 00:00:00 2001 From: Brentley Jones Date: Mon, 13 Apr 2020 11:31:26 -0500 Subject: [PATCH] Add `parallelizeBuild` to `TargetScheme` This is at the same level as `buildImplicitDependencies` and deserves to be part of the easy-mode scheme creation. --- Sources/ProjectSpec/TargetScheme.swift | 8 ++++++++ Sources/XcodeGenKit/SchemeGenerator.swift | 1 + .../xcshareddata/xcschemes/App_iOS Production.xcscheme | 4 ++-- .../xcshareddata/xcschemes/App_iOS Staging.xcscheme | 4 ++-- .../xcshareddata/xcschemes/App_iOS Test.xcscheme | 4 ++-- Tests/Fixtures/TestProject/project.yml | 2 ++ 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Sources/ProjectSpec/TargetScheme.swift b/Sources/ProjectSpec/TargetScheme.swift index 8e3f17e3..a7c8c1a4 100644 --- a/Sources/ProjectSpec/TargetScheme.swift +++ b/Sources/ProjectSpec/TargetScheme.swift @@ -10,6 +10,7 @@ public struct TargetScheme: Equatable { public var region: String? public var disableMainThreadChecker: Bool? public var stopOnEveryMainThreadCheckerIssue: Bool? + public var parallelizeBuild: Bool? public var buildImplicitDependencies: Bool? public var commandLineArguments: [String: Bool] public var environmentVariables: [XCScheme.EnvironmentVariable] @@ -24,6 +25,7 @@ public struct TargetScheme: Equatable { region: String? = nil, disableMainThreadChecker: Bool? = nil, stopOnEveryMainThreadCheckerIssue: Bool? = nil, + parallelizeBuild: Bool? = nil, buildImplicitDependencies: Bool? = nil, commandLineArguments: [String: Bool] = [:], environmentVariables: [XCScheme.EnvironmentVariable] = [], @@ -37,6 +39,7 @@ public struct TargetScheme: Equatable { self.region = region self.disableMainThreadChecker = disableMainThreadChecker self.stopOnEveryMainThreadCheckerIssue = stopOnEveryMainThreadCheckerIssue + self.parallelizeBuild = parallelizeBuild self.buildImplicitDependencies = buildImplicitDependencies self.commandLineArguments = commandLineArguments self.environmentVariables = environmentVariables @@ -67,6 +70,7 @@ extension TargetScheme: JSONObjectConvertible { region = jsonDictionary.json(atKeyPath: "region") disableMainThreadChecker = jsonDictionary.json(atKeyPath: "disableMainThreadChecker") stopOnEveryMainThreadCheckerIssue = jsonDictionary.json(atKeyPath: "stopOnEveryMainThreadCheckerIssue") + parallelizeBuild = jsonDictionary.json(atKeyPath: "parallelizeBuild") buildImplicitDependencies = jsonDictionary.json(atKeyPath: "buildImplicitDependencies") commandLineArguments = jsonDictionary.json(atKeyPath: "commandLineArguments") ?? [:] environmentVariables = try XCScheme.EnvironmentVariable.parseAll(jsonDictionary: jsonDictionary) @@ -97,6 +101,10 @@ extension TargetScheme: JSONEncodable { if let stopOnEveryMainThreadCheckerIssue = stopOnEveryMainThreadCheckerIssue { dict["stopOnEveryMainThreadCheckerIssue"] = stopOnEveryMainThreadCheckerIssue } + + if let parallelizeBuild = parallelizeBuild { + dict["parallelizeBuild"] = parallelizeBuild + } if let buildImplicitDependencies = buildImplicitDependencies { dict["buildImplicitDependencies"] = buildImplicitDependencies diff --git a/Sources/XcodeGenKit/SchemeGenerator.swift b/Sources/XcodeGenKit/SchemeGenerator.swift index 0fa7b87d..6c6916ef 100644 --- a/Sources/XcodeGenKit/SchemeGenerator.swift +++ b/Sources/XcodeGenKit/SchemeGenerator.swift @@ -314,6 +314,7 @@ extension Scheme { name: name, build: .init( targets: Scheme.buildTargets(for: target, project: project), + parallelizeBuild: targetScheme.parallelizeBuild ?? Build.parallelizeBuildDefault, buildImplicitDependencies: targetScheme.buildImplicitDependencies ?? Build.buildImplicitDependenciesDefault, preActions: targetScheme.preActions, postActions: targetScheme.postActions diff --git a/Tests/Fixtures/TestProject/Project.xcodeproj/xcshareddata/xcschemes/App_iOS Production.xcscheme b/Tests/Fixtures/TestProject/Project.xcodeproj/xcshareddata/xcschemes/App_iOS Production.xcscheme index 7745121b..dac8a1f4 100644 --- a/Tests/Fixtures/TestProject/Project.xcodeproj/xcshareddata/xcschemes/App_iOS Production.xcscheme +++ b/Tests/Fixtures/TestProject/Project.xcodeproj/xcshareddata/xcschemes/App_iOS Production.xcscheme @@ -3,8 +3,8 @@ LastUpgradeVersion = "1020" version = "1.3"> + parallelizeBuildables = "NO" + buildImplicitDependencies = "NO"> + parallelizeBuildables = "NO" + buildImplicitDependencies = "NO"> + parallelizeBuildables = "NO" + buildImplicitDependencies = "NO">