57 lines
1.1 KiB
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()
|