43 lines
919 B
Swift
43 lines
919 B
Swift
import CustomDump
|
|
import Dependencies
|
|
import Logging
|
|
import ShellClient
|
|
|
|
public struct LoggingOptions: Equatable, Sendable {
|
|
|
|
let command: String
|
|
let executableName: String
|
|
let verbose: Int
|
|
|
|
public init(
|
|
executableName: String = "bump-version",
|
|
command: String,
|
|
verbose: Int
|
|
) {
|
|
self.executableName = executableName
|
|
self.command = command
|
|
self.verbose = verbose
|
|
}
|
|
|
|
public func withLogger<T>(_ operation: () async throws -> T) async rethrows -> T {
|
|
try await withDependencies {
|
|
$0.logger = makeLogger()
|
|
$0.logger.logLevel = .init(verbose: verbose)
|
|
} operation: {
|
|
try await operation()
|
|
}
|
|
}
|
|
}
|
|
|
|
public extension Logger {
|
|
func dump<T>(
|
|
_ type: T,
|
|
level: Level = .trace,
|
|
buildMessage: @escaping (String) -> String = { $0 }
|
|
) {
|
|
var message = ""
|
|
customDump(type, to: &message)
|
|
log(level: level, "\(buildMessage(message))")
|
|
}
|
|
}
|