dotfiles/Dotfiles/ShellLog/main.swift

57 lines
1.1 KiB
Swift

//
// main.swift
// ShellLog
//
// Created by Eryn Wells on 1/18/22.
//
import ArgumentParser
import OSLog
enum Level {
case Debug
case Info
case Warn
case Error
}
extension Level: ExpressibleByArgument {
init?(argument: String) {
switch (argument) {
case "debug":
self = .Debug
case "info":
self = .Info
case "warn":
self = .Warn
case "error":
self = .Error
default:
return nil
}
}
}
struct ShellLog: ParsableCommand {
@Option(name: .shortAndLong, help: "The log level")
var level: Level?
@Argument() var message: String
func run() throws {
let log = Logger(subsystem: "me.erynwells.shell", category: "Shell")
switch level {
case .some(.Debug):
log.debug("\(message, privacy: .public)")
case .none, .some(.Info):
log.info("\(message, privacy: .public)")
case .some(.Warn):
log.warning("\(message, privacy: .public)")
case .some(.Error):
log.error("\(message, privacy: .public)")
}
}
}
ShellLog.main()