Skip to content

Commit cd4b264

Browse files
author
Eric Miller
committed
Copy Unity Data folder to iOS project
1 parent 51cf7c9 commit cd4b264

File tree

3 files changed

+41
-1
lines changed

3 files changed

+41
-1
lines changed

Sources/UBKit/Models/Config.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ struct Config {
2525
let relativeIOSBuildPath: String
2626
let relativeUnityClassesPath: String
2727
let relativeUnityLibrariesPath: String
28+
let relativeUnityDataPath: String
2829

2930
init?(json: [String : String]) {
3031
guard let projectName = json[Keys.projectName],
@@ -57,5 +58,6 @@ struct Config {
5758
self.relativeIOSBuildPath = self.projectName.appending("/ios_build/")
5859
self.relativeUnityClassesPath = self.projectName.appending("/ios_build/Classes/")
5960
self.relativeUnityLibrariesPath = self.projectName.appending("/ios_build/Libraries/")
61+
self.relativeUnityDataPath = self.projectName.appending("/ios_build/Data/")
6062
}
6163
}

Sources/UBKit/Workers/FileCopier.swift

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ class FileCopier {
7272
return addLibrariesFilesResult
7373
}
7474

75+
let copyDataResult = copyUnityDataFolder()
76+
guard copyDataResult == .success else {
77+
return copyDataResult
78+
}
79+
7580
print("Saving Xcode project")
7681
let saveResult = saveProject()
7782
guard saveResult == .success else {
@@ -182,7 +187,6 @@ private extension FileCopier {
182187
if let mainTarget = project.pbxproj.nativeTargets.filter({ $0.name == config.projectName }).first,
183188
parentGroup.name == "Libraries" {
184189
mainTarget.buildPhases.append(frameworksBuildPhase.reference)
185-
print("Adding to main target")
186190
}
187191
project.pbxproj.addObject(frameworksBuildPhase)
188192

@@ -243,6 +247,36 @@ private extension FileCopier {
243247
return add(toPath: workingPath, parentGroup: parentGroup)
244248
}
245249

250+
func copyUnityDataFolder() -> Result {
251+
guard let project = project else {
252+
return .failure(UBKitError.invalidXcodeProject)
253+
}
254+
255+
guard let unityGroup = project.pbxproj.groups.filter({ $0.path == "Unity" }).first else {
256+
return .failure(UBKitError.invalidXcodeProject)
257+
}
258+
259+
let resourcesBuildPhases = project.pbxproj.resourcesBuildPhases
260+
guard resourcesBuildPhases.count == 1, let resourcesBuildPhase = resourcesBuildPhases.first else {
261+
return .failure(UBKitError.invalidXcodeProject)
262+
}
263+
264+
let fileReference = PBXFileReference(reference: generateUUID(PBXFileReference.self, "data".appending(nameSalt)),
265+
sourceTree: .absolute)
266+
fileReference.name = "Data"
267+
fileReference.path = workingPath.appending(config.relativeUnityDataPath)
268+
fileReference.lastKnownFileType = "folder"
269+
unityGroup.children.append(fileReference.reference)
270+
project.pbxproj.addObject(fileReference)
271+
272+
let buildFile = PBXBuildFile(reference: generateUUID(PBXBuildFile.self, "data".appending(nameSalt)),
273+
fileRef: fileReference.reference)
274+
project.pbxproj.addObject(buildFile)
275+
resourcesBuildPhase.files.append(buildFile.reference)
276+
277+
return .success
278+
}
279+
246280
func saveProject() -> Result {
247281
guard let project = project else {
248282
return .failure(UBKitError.invalidXcodeProject)

UnityBuildKit.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,8 @@
468468

469469
/* Begin PBXFileReference section */
470470
"AEXML::AEXML::Product" /* AEXML.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AEXML.framework; sourceTree = BUILT_PRODUCTS_DIR; };
471+
D450F1BA1F94230600D5283B /* ubconfig.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = ubconfig.json; sourceTree = "<group>"; };
472+
D450F1BB1F94230700D5283B /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
471473
D4A53F081F9238BE00FF33E0 /* UBKitError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UBKitError.swift; sourceTree = "<group>"; };
472474
D4A53F0A1F9385D500FF33E0 /* Config.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Config.swift; sourceTree = "<group>"; };
473475
"JSONUtilities::JSONUtilities::Product" /* JSONUtilities.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = JSONUtilities.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1015,6 +1017,8 @@
10151017
OBJ_5 = {
10161018
isa = PBXGroup;
10171019
children = (
1020+
D450F1BB1F94230700D5283B /* README.md */,
1021+
D450F1BA1F94230600D5283B /* ubconfig.json */,
10181022
OBJ_6 /* Package.swift */,
10191023
OBJ_7 /* Sources */,
10201024
OBJ_39 /* Tests */,

0 commit comments

Comments
 (0)