Skip to content

Commit e8a7b50

Browse files
committed
[feat]: printable errors
1 parent 6af3a3c commit e8a7b50

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

Sources/ScriptToolkit/ScriptToolkit.swift

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,60 @@
88
import Foundation
99
import Files
1010
import SwiftShell
11+
import Moderator
1112

13+
public protocol PrintableError {
14+
var errorDescription: String { get }
15+
}
16+
17+
public enum ScriptError: Error {
18+
case generalError(message: String)
19+
case fileExists(message: String)
20+
case fileNotFound(message: String)
21+
case folderExists(message: String)
22+
case folderNotFound(message: String)
23+
case argumentError(message: String)
24+
case moreInfoNeeded(message: String)
25+
}
26+
27+
extension ScriptError: PrintableError {
28+
public var errorDescription: String {
29+
let prefix = "💥 error: "
30+
var errorDescription = ""
31+
32+
switch self {
33+
case let .generalError(message):
34+
errorDescription = message
35+
36+
case let .fileExists(message):
37+
errorDescription = "file exists: \(message)"
38+
39+
case let .fileNotFound(message):
40+
errorDescription = "file not found: \(message)"
41+
42+
case let .folderExists(message):
43+
errorDescription = "folder exists: \(message)"
44+
45+
case let .folderNotFound(message):
46+
errorDescription = "folder not found: \(message)"
47+
48+
case let .argumentError(message):
49+
errorDescription = "invalid argument: \(message)"
50+
51+
case let .moreInfoNeeded(message):
52+
errorDescription = "more info needed: \(message)"
53+
}
54+
55+
return prefix + errorDescription
56+
}
57+
}
58+
59+
60+
extension ArgumentError: PrintableError {
61+
public var errorDescription: String {
62+
return "💥 error: \(errormessage)"
63+
}
64+
}
1265

1366
public struct ScriptToolkit {
1467

0 commit comments

Comments
 (0)