Skip to content

Commit 51cf7c9

Browse files
author
Eric Miller
committed
Add better error handling messages
1 parent 320b916 commit 51cf7c9

File tree

7 files changed

+43
-15
lines changed

7 files changed

+43
-15
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ xcuserdata/
2020
iOS/
2121
Unity/
2222
ubconfig.json
23+
refreshprojects.swift
2324

2425
## Other
2526
*.moved-aside

Sources/UBKit/Models/UBKitError.swift

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,43 @@
77

88
import Foundation
99

10-
enum UBKitError: Error {
10+
enum UBKitError: Error, CustomStringConvertible {
1111
case error(Error)
1212
case unableToCreateFile(String)
13-
case invalidFolder
13+
case invalidFolder(String)
1414
case invalidXcodeProject
1515
case missingGroup(String)
1616
case invalidUnityProject
17-
case unableToCreateXcodeProjectGroup
17+
case unableToCreateXcodeProjectGroup(String)
1818
case unableToSaveXcodeProject
1919
case waitTimedOut
20-
case shellCommand
20+
case shellCommand(String)
2121
case invalidConfigFile
22+
23+
var description: String {
24+
switch self {
25+
case .error(let err):
26+
return err.localizedDescription
27+
case .unableToCreateFile(let str):
28+
return "Unable to create \(str)"
29+
case .invalidFolder(let str):
30+
return "Invalid Folder: \(str)"
31+
case .invalidXcodeProject:
32+
return "Invalid Xcode Project"
33+
case .missingGroup(let str):
34+
return "Could not find \(str)"
35+
case .invalidUnityProject:
36+
return "Invalid Unity Project"
37+
case .unableToCreateXcodeProjectGroup(let str):
38+
return "Could not create Xcode Group: \(str)"
39+
case .unableToSaveXcodeProject:
40+
return "Unable To Save Xcode Project"
41+
case .waitTimedOut:
42+
return "Wait Timed Out"
43+
case .shellCommand(let str):
44+
return "Failed to execute shell command: \(str)"
45+
case .invalidConfigFile:
46+
return "Invalid config file"
47+
}
48+
}
2249
}

Sources/UBKit/UBKit.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public final class UBKit {
2525

2626
}
2727
} catch {
28-
completion(UBKitError.invalidFolder)
28+
completion(UBKitError.invalidFolder(workingPath.appending("/ubconfig.json")))
2929
}
3030

3131
let taskResult = kitManager.performTasks()

Sources/UBKit/Workers/FileCopier.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ private extension FileCopier {
112112
let pathStrings = try fileManager.contentsOfDirectory(atPath: xcodeProjectPath)
113113
for pathString in pathStrings {
114114
let path = Path("../".appending(pathString))
115-
if (getBuildPhaseForPath(path) == .sources || getBuildPhaseForPath(path) == .headers) && pathString.hasPrefix("Unity") {
115+
if (getBuildPhaseForPath(path) == .sources || getBuildPhaseForPath(path) == .headers) &&
116+
pathString.hasPrefix("Unity") {
116117
guard let source = generateSourceFile(path: path, in: targetGroup, name: pathString) else {
117118
return .failure(UBKitError.unableToCreateFile(path.string))
118119
}
@@ -197,7 +198,7 @@ private extension FileCopier {
197198
let path = Path(pathString)
198199
if getBuildPhaseForPath(path) == nil {
199200
guard let group = generateGroup(path.string) else {
200-
return .failure(UBKitError.unableToCreateXcodeProjectGroup)
201+
return .failure(UBKitError.unableToCreateXcodeProjectGroup(path.string))
201202
}
202203
group.path = path.string
203204
parentGroup.children.append(group.reference)

Sources/UBKit/Workers/ProjectRefresher.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private extension ProjectRefresher {
7373
if statusCode == 0 {
7474
return .success
7575
} else {
76-
return .failure(UBKitError.shellCommand)
76+
return .failure(UBKitError.shellCommand("Initialize Unity Project"))
7777
}
7878
case .timedOut:
7979
return .failure(UBKitError.waitTimedOut)

Sources/UBKit/Workers/UnityProject.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class UnityProject {
4242

4343
func create() -> Result {
4444
guard UBKit.validatePath(unityAppPath, isDirectory: false) else {
45-
return .failure(UBKitError.invalidFolder)
45+
return .failure(UBKitError.invalidFolder(unityAppPath))
4646
}
4747

4848
let unityFolderResult = createUnityFolder()
@@ -104,7 +104,7 @@ private extension UnityProject {
104104
if statusCode == 0 {
105105
return .success
106106
} else {
107-
return .failure(UBKitError.shellCommand)
107+
return .failure(UBKitError.shellCommand("Generate Unity Project"))
108108
}
109109
case .timedOut:
110110
return .failure(UBKitError.waitTimedOut)
@@ -114,8 +114,7 @@ private extension UnityProject {
114114
func createUnityEditorScripts() -> Result {
115115
let assetsFilePath = workingPath.appending(projectName).appending("/Assets/")
116116
guard UBKit.validatePath(assetsFilePath, isDirectory: true) else {
117-
118-
return .failure(UBKitError.invalidFolder)
117+
return .failure(UBKitError.invalidFolder(assetsFilePath))
119118
}
120119
let editorFilePath = assetsFilePath.appending("Editor/")
121120
let scenesFilePath = assetsFilePath.appending("Scenes/")

Sources/UBKit/Workers/XcodeProject.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ private extension XcodeProject {
9797

9898
func createSpecFile() -> Result {
9999
guard UBKit.validatePath(workingPath, isDirectory: true) else {
100-
return .failure(UBKitError.invalidFolder)
100+
return .failure(UBKitError.invalidFolder(workingPath))
101101
}
102102

103103
let contents = File.specFile(
@@ -128,7 +128,7 @@ private extension XcodeProject {
128128

129129
func createSourceFiles() -> Result {
130130
guard UBKit.validatePath(projectPath, isDirectory: true) else {
131-
return .failure(UBKitError.invalidFolder)
131+
return .failure(UBKitError.invalidFolder(projectPath))
132132
}
133133

134134
guard fileManager.createFile(
@@ -171,7 +171,7 @@ private extension XcodeProject {
171171

172172
func createAssetCatalog() -> Result {
173173
guard UBKit.validatePath(projectPath, isDirectory: true) else {
174-
return .failure(UBKitError.invalidFolder)
174+
return .failure(UBKitError.invalidFolder(projectPath))
175175
}
176176

177177
let assetsFilePath = projectPath.appending("Assets.xcassets/")

0 commit comments

Comments
 (0)