mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
Improved Application Extension scheme generation (#932)
* Default extensions to launchAutomaticallySubstyle "2" * Don't use debugger launcher with extensions Xcode schemes don't use the LLDB launcher, even when debugging is enabled. Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
This commit is contained in:
co-authored by
Yonas Kolb
parent
c8b24acbdd
commit
5ac96741bc
@@ -240,8 +240,8 @@ 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 : "",
|
||||
selectedLauncherIdentifier: (scheme.run?.debugEnabled ?? Scheme.Run.debugEnabledDefault) ? XCScheme.defaultLauncher : "Xcode.IDEFoundation.Launcher.PosixSpawn",
|
||||
selectedDebuggerIdentifier: selectedDebuggerIdentifier(for: schemeTarget, run: scheme.run),
|
||||
selectedLauncherIdentifier: selectedLauncherIdentifier(for: schemeTarget, run: scheme.run),
|
||||
askForAppToLaunch: scheme.run?.askForAppToLaunch,
|
||||
allowLocationSimulation: allowLocationSimulation,
|
||||
locationScenarioReference: locationScenarioReference,
|
||||
@@ -251,7 +251,7 @@ public class SchemeGenerator {
|
||||
environmentVariables: launchVariables,
|
||||
language: scheme.run?.language,
|
||||
region: scheme.run?.region,
|
||||
launchAutomaticallySubstyle: scheme.run?.launchAutomaticallySubstyle,
|
||||
launchAutomaticallySubstyle: scheme.run?.launchAutomaticallySubstyle ?? launchAutomaticallySubstyle(for: schemeTarget),
|
||||
customLLDBInitFile: scheme.run?.customLLDBInit
|
||||
)
|
||||
|
||||
@@ -290,6 +290,14 @@ public class SchemeGenerator {
|
||||
)
|
||||
}
|
||||
|
||||
private func launchAutomaticallySubstyle(for target: Target?) -> String? {
|
||||
if target?.type.isExtension == true {
|
||||
return "2"
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
private func makeProductRunnables(for target: Target?, buildableReference: XCScheme.BuildableReference) -> (launch: XCScheme.Runnable, profile: XCScheme.BuildableProductRunnable) {
|
||||
let buildable = XCScheme.BuildableProductRunnable(buildableReference: buildableReference)
|
||||
if target?.type.isWatchApp == true {
|
||||
@@ -303,6 +311,22 @@ public class SchemeGenerator {
|
||||
return (buildable, buildable)
|
||||
}
|
||||
}
|
||||
|
||||
private func selectedDebuggerIdentifier(for target: Target?, run: Scheme.Run?) -> String {
|
||||
if target?.type.canUseDebugLauncher != false && run?.debugEnabled ?? Scheme.Run.debugEnabledDefault {
|
||||
return XCScheme.defaultDebugger
|
||||
} else {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
private func selectedLauncherIdentifier(for target: Target?, run: Scheme.Run?) -> String {
|
||||
if target?.type.canUseDebugLauncher != false && run?.debugEnabled ?? Scheme.Run.debugEnabledDefault {
|
||||
return XCScheme.defaultLauncher
|
||||
} else {
|
||||
return "Xcode.IDEFoundation.Launcher.PosixSpawn"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum SchemeGenerationError: Error, CustomStringConvertible {
|
||||
@@ -380,6 +404,11 @@ extension Scheme {
|
||||
}
|
||||
|
||||
extension PBXProductType {
|
||||
var canUseDebugLauncher: Bool {
|
||||
// Extensions don't use the lldb launcher
|
||||
return !isExtension
|
||||
}
|
||||
|
||||
var isWatchApp: Bool {
|
||||
switch self {
|
||||
case .watchApp, .watch2App:
|
||||
|
||||
Reference in New Issue
Block a user