mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
Introduce ProjectName/Target syntax to reference target
This commit is contained in:
@@ -77,32 +77,36 @@ public class SchemeGenerator {
|
||||
|
||||
func getBuildEntry(_ buildTarget: Scheme.BuildTarget) throws -> XCScheme.BuildAction.Entry {
|
||||
let pbxProj: PBXProj
|
||||
let projectFilename: String
|
||||
if let externalProject = buildTarget.externalProject {
|
||||
pbxProj = try XcodeProj(pathString: externalProject).pbxproj
|
||||
projectFilename = externalProject
|
||||
} else {
|
||||
let projectFilePath: String
|
||||
switch buildTarget.target.location {
|
||||
case .project(let project):
|
||||
guard let externalProject = self.project.getExternalProject(project) else {
|
||||
fatalError("Unable to find external project named \"\(project)\" in project.yml")
|
||||
}
|
||||
pbxProj = try XcodeProj(pathString: externalProject.path).pbxproj
|
||||
projectFilePath = externalProject.path
|
||||
case .local:
|
||||
pbxProj = self.pbxProj
|
||||
projectFilename = "\(self.project.name).xcodeproj"
|
||||
projectFilePath = "\(self.project.name).xcodeproj"
|
||||
}
|
||||
|
||||
guard let pbxTarget = pbxProj.targets(named: buildTarget.target).first else {
|
||||
guard let pbxTarget = pbxProj.targets(named: buildTarget.target.name).first else {
|
||||
fatalError("Unable to find target named \"\(buildTarget.target)\" in \"PBXProj.targets\"")
|
||||
}
|
||||
|
||||
let buildableName = pbxTarget.productNameWithExtension() ?? pbxTarget.name
|
||||
let buildableReference = XCScheme.BuildableReference(
|
||||
referencedContainer: "container:\(projectFilename)",
|
||||
referencedContainer: "container:\(projectFilePath)",
|
||||
blueprint: pbxTarget,
|
||||
buildableName: buildableName,
|
||||
blueprintName: buildTarget.target
|
||||
blueprintName: buildTarget.target.name
|
||||
)
|
||||
return XCScheme.BuildAction.Entry(buildableReference: buildableReference, buildFor: buildTarget.buildTypes)
|
||||
}
|
||||
|
||||
let testTargets = scheme.test?.targets ?? []
|
||||
let testBuildTargets = testTargets.map {
|
||||
Scheme.BuildTarget(target: $0.name, externalProject: $0.externalProject, buildTypes: BuildType.testOnly)
|
||||
Scheme.BuildTarget(target: TargetReference(name: $0.name, location: .local), buildTypes: BuildType.testOnly)
|
||||
}
|
||||
|
||||
let testBuildTargetEntries = try testBuildTargets.map(getBuildEntry)
|
||||
@@ -119,7 +123,7 @@ public class SchemeGenerator {
|
||||
return XCScheme.ExecutionAction(scriptText: action.script, title: action.name, environmentBuildable: environmentBuildable)
|
||||
}
|
||||
|
||||
let target = project.getTarget(scheme.build.targets.first!.target)
|
||||
let target = project.getTarget(scheme.build.targets.first!.target.name)
|
||||
let shouldExecuteOnLaunch = target?.type.isExecutable == true
|
||||
|
||||
let buildableReference = buildActionEntries.first!.buildableReference
|
||||
@@ -217,7 +221,7 @@ extension Scheme {
|
||||
public init(name: String, target: Target, targetScheme: TargetScheme, debugConfig: String, releaseConfig: String) {
|
||||
self.init(
|
||||
name: name,
|
||||
build: .init(targets: [Scheme.BuildTarget(target: target.name)]),
|
||||
build: .init(targets: [Scheme.BuildTarget(target: TargetReference(name: target.name, location: .local))]),
|
||||
run: .init(
|
||||
config: debugConfig,
|
||||
commandLineArguments: targetScheme.commandLineArguments,
|
||||
|
||||
Reference in New Issue
Block a user