Files
XcodeGen/Sources/XcodeGenKit/ProjectGenerator.swift
T
Aleksei Sapitskii c082bc0c7c Fix XcodeGen building after XcodeProj update to 8.8.0 (#1228)
* Fix XcodeGen building after XcodeProj update to 8.8.0

**Reason**
- XcodeProj has been updated and has API breaking changes

**Content**
- Added new enum case handling in `Linkage`
- Renamed the enum case name for `XCWorkspaceDataFileRef.init`

* add new product type to docs

* update changelog

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2022-07-16 16:46:42 +10:00

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: .current(""))
let dataElement = XCWorkspaceDataElement.file(selfReference)
let workspaceData = XCWorkspaceData(children: [dataElement])
return XCWorkspace(data: workspaceData)
}
}