From a2835ef2992e08cebab37fba52b93fbf1a59f26d Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Mon, 16 Sep 2019 11:00:32 +0900 Subject: [PATCH] Add debugEnabled option for run and test --- Sources/ProjectSpec/Scheme.swift | 21 +++++++++++++++++++-- Sources/XcodeGenKit/SchemeGenerator.swift | 2 ++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Sources/ProjectSpec/Scheme.swift b/Sources/ProjectSpec/Scheme.swift index f60a26da..cc53b13a 100644 --- a/Sources/ProjectSpec/Scheme.swift +++ b/Sources/ProjectSpec/Scheme.swift @@ -69,6 +69,7 @@ public struct Scheme: Equatable { public struct Run: BuildAction { public static let disableMainThreadCheckerDefault = false + public static let debugEnabledDefault = true public var config: String? public var commandLineArguments: [String: Bool] @@ -78,6 +79,7 @@ public struct Scheme: Equatable { public var disableMainThreadChecker: Bool public var language: String? public var region: String? + public var debugEnabled: Bool public init( config: String, @@ -87,7 +89,8 @@ public struct Scheme: Equatable { environmentVariables: [XCScheme.EnvironmentVariable] = [], disableMainThreadChecker: Bool = disableMainThreadCheckerDefault, language: String? = nil, - region: String? = nil + region: String? = nil, + debugEnabled: Bool = debugEnabledDefault ) { self.config = config self.commandLineArguments = commandLineArguments @@ -97,12 +100,14 @@ public struct Scheme: Equatable { self.disableMainThreadChecker = disableMainThreadChecker self.language = language self.region = region + self.debugEnabled = debugEnabled } } public struct Test: BuildAction { public static let gatherCoverageDataDefault = false public static let disableMainThreadCheckerDefault = false + public static let debugEnabledDefault = true public var config: String? public var gatherCoverageData: Bool @@ -114,6 +119,7 @@ public struct Scheme: Equatable { public var environmentVariables: [XCScheme.EnvironmentVariable] public var language: String? public var region: String? + public var debugEnabled: Bool public struct TestTarget: Equatable, ExpressibleByStringLiteral { public static let randomExecutionOrderDefault = false @@ -156,7 +162,8 @@ public struct Scheme: Equatable { postActions: [ExecutionAction] = [], environmentVariables: [XCScheme.EnvironmentVariable] = [], language: String? = nil, - region: String? = nil + region: String? = nil, + debugEnabled: Bool = debugEnabledDefault ) { self.config = config self.gatherCoverageData = gatherCoverageData @@ -168,6 +175,7 @@ public struct Scheme: Equatable { self.environmentVariables = environmentVariables self.language = language self.region = region + self.debugEnabled = debugEnabled } public var shouldUseLaunchSchemeArgsEnv: Bool { @@ -275,6 +283,7 @@ extension Scheme.Run: JSONObjectConvertible { disableMainThreadChecker = jsonDictionary.json(atKeyPath: "disableMainThreadChecker") ?? Scheme.Run.disableMainThreadCheckerDefault language = jsonDictionary.json(atKeyPath: "language") region = jsonDictionary.json(atKeyPath: "region") + debugEnabled = jsonDictionary.json(atKeyPath: "debugEnabled") ?? Scheme.Run.debugEnabledDefault } } @@ -294,6 +303,9 @@ extension Scheme.Run: JSONEncodable { dict["disableMainThreadChecker"] = disableMainThreadChecker } + if debugEnabled != Scheme.Run.debugEnabledDefault { + dict["debugEnabled"] = debugEnabled + } return dict } } @@ -323,6 +335,7 @@ extension Scheme.Test: JSONObjectConvertible { environmentVariables = try XCScheme.EnvironmentVariable.parseAll(jsonDictionary: jsonDictionary) language = jsonDictionary.json(atKeyPath: "language") region = jsonDictionary.json(atKeyPath: "region") + debugEnabled = jsonDictionary.json(atKeyPath: "debugEnabled") ?? Scheme.Test.debugEnabledDefault } } @@ -347,6 +360,10 @@ extension Scheme.Test: JSONEncodable { dict["disableMainThreadChecker"] = disableMainThreadChecker } + if debugEnabled != Scheme.Run.debugEnabledDefault { + dict["debugEnabled"] = debugEnabled + } + return dict } } diff --git a/Sources/XcodeGenKit/SchemeGenerator.swift b/Sources/XcodeGenKit/SchemeGenerator.swift index 2af0b16e..e1076dae 100644 --- a/Sources/XcodeGenKit/SchemeGenerator.swift +++ b/Sources/XcodeGenKit/SchemeGenerator.swift @@ -152,6 +152,7 @@ public class SchemeGenerator { testables: testables, preActions: scheme.test?.preActions.map(getExecutionAction) ?? [], postActions: scheme.test?.postActions.map(getExecutionAction) ?? [], + selectedDebuggerIdentifier: (scheme.test?.debugEnabled ?? Scheme.Test.debugEnabledDefault) ? XCScheme.defaultDebugger : "", shouldUseLaunchSchemeArgsEnv: scheme.test?.shouldUseLaunchSchemeArgsEnv ?? true, codeCoverageEnabled: scheme.test?.gatherCoverageData ?? Scheme.Test.gatherCoverageDataDefault, disableMainThreadChecker: scheme.test?.disableMainThreadChecker ?? Scheme.Test.disableMainThreadCheckerDefault, @@ -167,6 +168,7 @@ public class SchemeGenerator { preActions: scheme.run?.preActions.map(getExecutionAction) ?? [], postActions: scheme.run?.postActions.map(getExecutionAction) ?? [], macroExpansion: shouldExecuteOnLaunch ? nil : buildableReference, + selectedDebuggerIdentifier: (scheme.run?.debugEnabled ?? Scheme.Run.debugEnabledDefault) ? XCScheme.defaultDebugger : "", disableMainThreadChecker: scheme.run?.disableMainThreadChecker ?? Scheme.Run.disableMainThreadCheckerDefault, commandlineArguments: launchCommandLineArgs, environmentVariables: launchVariables,