mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2024-09-20 00:58:04 +03:00
7c510af3d7
* fix xcode warning alert on regeneration * commit fixture diffs * update changelog
41 lines
1.3 KiB
Swift
41 lines
1.3 KiB
Swift
import Foundation
|
|
import JSONUtilities
|
|
import PathKit
|
|
import ProjectSpec
|
|
import XcodeProj
|
|
import Yams
|
|
|
|
public class ProjectGenerator {
|
|
|
|
let project: Project
|
|
|
|
public init(project: Project) {
|
|
self.project = project
|
|
}
|
|
|
|
public func generateXcodeProject(in projectDirectory: Path? = nil) throws -> XcodeProj {
|
|
|
|
// generate PBXProj
|
|
let pbxProjGenerator = PBXProjGenerator(project: project,
|
|
projectDirectory: projectDirectory)
|
|
let pbxProj = try pbxProjGenerator.generate()
|
|
|
|
// generate Schemes
|
|
let schemeGenerator = SchemeGenerator(project: project, pbxProj: pbxProj)
|
|
let schemes = try schemeGenerator.generateSchemes()
|
|
|
|
// generate Workspace
|
|
let workspace = try generateWorkspace()
|
|
|
|
let sharedData = XCSharedData(schemes: schemes)
|
|
return XcodeProj(workspace: workspace, pbxproj: pbxProj, sharedData: sharedData)
|
|
}
|
|
|
|
func generateWorkspace() throws -> XCWorkspace {
|
|
let selfReference = XCWorkspaceDataFileRef(location: .`self`(""))
|
|
let dataElement = XCWorkspaceDataElement.file(selfReference)
|
|
let workspaceData = XCWorkspaceData(children: [dataElement])
|
|
return XCWorkspace(data: workspaceData)
|
|
}
|
|
}
|