Files
GLEGram-iOS/third-party/XcodeGen/Sources/XcodeGenKit/ProjectGenerator.swift
T
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

57 lines
1.9 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, userName: String) throws -> XcodeProj {
// generate PBXProj
let pbxProjGenerator = PBXProjGenerator(project: project,
projectDirectory: projectDirectory)
let pbxProj = try pbxProjGenerator.generate()
// generate Workspace
let workspace = try generateWorkspace()
// generate Schemes
let schemeGenerator = SchemeGenerator(project: project, pbxProj: pbxProj)
let (sharedSchemes, userSchemes, schemeManagement) = try schemeGenerator.generateSchemes()
// generate Breakpoints
let breakpointGenerator = BreakpointGenerator(project: project)
let xcbreakpointlist = try breakpointGenerator.generateBreakpointList()
// generate shared data
let sharedData = XCSharedData(schemes: sharedSchemes, breakpoints: xcbreakpointlist)
// generate user data
let userData = userSchemes.isEmpty && schemeManagement == nil ? [] : [
XCUserData(userName: userName, schemes: userSchemes, schemeManagement: schemeManagement)
]
return XcodeProj(
workspace: workspace,
pbxproj: pbxProj,
sharedData: sharedData,
userData: userData
)
}
func generateWorkspace() throws -> XCWorkspace {
let selfReference = XCWorkspaceDataFileRef(location: .current(""))
let dataElement = XCWorkspaceDataElement.file(selfReference)
let workspaceData = XCWorkspaceData(children: [dataElement])
return XCWorkspace(data: workspaceData)
}
}