36 lines
1022 B
Swift
36 lines
1022 B
Swift
import Foundation
|
|
|
|
/// Process exit codes from SPEC §4.
|
|
enum AppExitCode: Int32 {
|
|
case success = 0
|
|
case invalidJob = 1
|
|
case unreadableTarget = 2
|
|
case printerError = 3
|
|
case internalFatal = 4
|
|
}
|
|
|
|
enum AppError: Error, CustomStringConvertible {
|
|
case invalidJob(String)
|
|
case unreadableTarget(String)
|
|
case printer(String)
|
|
case internalFatal(String)
|
|
|
|
var exitCode: AppExitCode {
|
|
switch self {
|
|
case .invalidJob: return .invalidJob
|
|
case .unreadableTarget: return .unreadableTarget
|
|
case .printer: return .printerError
|
|
case .internalFatal: return .internalFatal
|
|
}
|
|
}
|
|
|
|
var description: String {
|
|
switch self {
|
|
case .invalidJob(let m): return "Invalid / missing job file: \(m)"
|
|
case .unreadableTarget(let m): return "One or more target files unreadable: \(m)"
|
|
case .printer(let m): return "Printer / CUPS error: \(m)"
|
|
case .internalFatal(let m): return "Internal fatal error: \(m)"
|
|
}
|
|
}
|
|
}
|