CommandLineToolkit
61 строка · 1.6 Кб
1/*
2* Copyright (c) Avito Tech LLC
3*/
4
5import Foundation
6
7public enum Verbosity: UInt, Codable, Comparable {
8/// Detailed debug info suitable for tracing program execution
9case trace = 999
10/// Debug logs
11case debug = 500
12/// User visible logs
13case info = 400
14/// Warnings important for the user
15case warning = 300
16/// Errors important for the user
17case error = 200
18/// Always print this log message
19case always = 0
20
21public static func < (left: Verbosity, right: Verbosity) -> Bool {
22return left.rawValue < right.rawValue
23}
24
25public func allowsLoggingWthVerbosity(_ otherVerbosity: Verbosity) -> Bool {
26return otherVerbosity <= self
27}
28
29public init?(rawValue: UInt) {
30if rawValue >= Verbosity.trace.rawValue {
31self = .trace
32} else if rawValue >= Verbosity.debug.rawValue {
33self = .debug
34} else if rawValue >= Verbosity.info.rawValue {
35self = .info
36} else if rawValue >= Verbosity.warning.rawValue {
37self = .warning
38} else if rawValue >= Verbosity.error.rawValue {
39self = .error
40} else {
41self = .always
42}
43}
44
45public var stringCode: String {
46switch self {
47case .trace:
48return "TRACE"
49case .debug:
50return "DEBUG"
51case .info:
52return "INFO"
53case .warning:
54return "WARNING"
55case .error:
56return "ERROR"
57case .always:
58return "ALWAYS"
59}
60}
61}
62