## Log Happy ## ========= ## ## Little tool to extract expected information from log streams. import std/[json, logging, os, osproc, sequtils, streams, strutils] import std/nre except toSeq import docopt, malebolgia, ncurses import private/ncurses_ext from posix import signal type Expectation* = ref object label: string pattern: Regex expected, found: bool SourceKind = enum skStdIn, skFile, skCmd InSource = object case kind: SourceKind of skStdIn: discard of skFile: filename: string of skCmd: cmdInvocation: string let expPattern = re"^-([eE])([^;]+);(.+)$" var msgChannel: Channel[string] proc exitErr(msg: string): void = stderr.writeLine "log_happy: " & msg quit(QuitFailure) proc readStream(stream: Stream): void = var line: string try: while stream.readLine(line): msgChannel.send(line) except: discard "" when isMainModule: var cmdProc: Process var source = InSource(kind: skStdIn) var outFile: File var threadMaster = createMaster() try: let VERSION = "0.2.0" let usage = """ Usage: log_happy [options] log_happy [options] log_happy [options] -- Options: -h --help Print this usage information and exit. -v --version Print version information and exit. -e