1 Commits
0.2.1 ... main

Author SHA1 Message Date
9be03f61ea Updates to work under Nim 1.x 2025-12-16 15:12:49 -06:00
5 changed files with 26 additions and 22 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,2 @@
.*.sw?
log_happy log_happy
nimcache/ nimcache/

View File

@@ -2,11 +2,13 @@
## ========= ## =========
## ##
## Little tool to extract expected information from log streams. ## Little tool to extract expected information from log streams.
import json, ncurses, os, osproc, sequtils, streams, strutils, threadpool import json, logging, ncurses, os, osproc, sequtils, streams, strutils, threadpool
import nre except toSeq import nre except toSeq
import private/ncurses_ext import private/ncurses_ext
from posix import signal
type type
Expectation* = ref object Expectation* = ref object
label: string label: string
@@ -33,7 +35,7 @@ when isMainModule:
var outFile: File var outFile: File
try: try:
let VERSION = "0.2.1" let VERSION = "0.2.0"
let usage = """ let usage = """
Usage: Usage:
log_happy [options] log_happy [options]
@@ -111,7 +113,7 @@ Expectations JSON definitions follow this format:
elif arg.startsWith("-i"): elif arg.startsWith("-i"):
let filename = arg[2..^1] let filename = arg[2..^1]
try: try:
if not fileExists(filename): if not existsFile(filename):
exitErr "no such file (" & filename & ")" exitErr "no such file (" & filename & ")"
inStream = newFileStream(filename) inStream = newFileStream(filename)

View File

@@ -1,6 +1,6 @@
# Package # Package
version = "0.2.1" version = "0.2.0"
author = "Jonathan Bernard" author = "Jonathan Bernard"
description = "Scan logs for regex-defined events and report on what was found." description = "Scan logs for regex-defined events and report on what was found."
license = "MIT" license = "MIT"
@@ -9,3 +9,4 @@ bin = @["log_happy"]
# Dependencies # Dependencies
requires @["nim >= 0.16.1", "docopt >= 0.6.4", "ncurses"] requires @["nim >= 0.16.1", "docopt >= 0.6.4", "ncurses"]

2
mise.toml Normal file
View File

@@ -0,0 +1,2 @@
[tools]
nim = "1"

View File

@@ -1,31 +1,31 @@
import ncurses import ncurses
export ncurses export ncurses
#proc keypad*(win: PWindow, enable: bool): int {.cdecl, discardable, importc: "keypad", dynlib: libncurses.} #proc keypad*(win: ptr window, enable: bool): int {.cdecl, discardable, importc: "keypad", dynlib: libncurses.}
#proc scrollok*(win: PWindow, enable: bool): int {.cdecl, discardable, importc: "scrollok", dynlib: libncurses.} #proc scrollok*(win: ptr window, enable: bool): int {.cdecl, discardable, importc: "scrollok", dynlib: libncurses.}
#proc nodelay*(win: PWindow, enable: bool): int {.cdecl, discardable, importc: "nodelay", dynlib: libncurses.} #proc nodelay*(win: ptr window, enable: bool): int {.cdecl, discardable, importc: "nodelay", dynlib: libncurses.}
#proc nonl*(): int {.cdecl, discardable, importc: "nonl", dynlib: libncurses.} #proc nonl*(): int {.cdecl, discardable, importc: "nonl", dynlib: libncurses.}
proc newwin*(num_rows, num_cols, begin_x, begin_y: int): PWindow {.cdecl, discardable, importc: "newwin", dynlib: libncurses.} proc newwin*(num_rows, num_cols, begin_x, begin_y: int): ptr window {.cdecl, discardable, importc: "newwin", dynlib: libncurses.}
proc delwin*(win: PWindow): int {.cdecl, discardable, importc: "delwin", dynlib: libncurses.} proc delwin*(win: ptr window): int {.cdecl, discardable, importc: "delwin", dynlib: libncurses.}
#proc newwin(num_rows, num_cols, begin_x, begin_y: int): PWindow {.cdecl, discardable, importc: "newwin", dynlib: libncurses.} #proc newwin(num_rows, num_cols, begin_x, begin_y: int): ptr window {.cdecl, discardable, importc: "newwin", dynlib: libncurses.}
#proc wgetch*(win: PWindow): int {.cdecl, discardable, importc: "wgetch", dynlib: libncurses.} #proc wgetch*(win: ptr window): int {.cdecl, discardable, importc: "wgetch", dynlib: libncurses.}
#proc wrefresh*(win: PWindow): int {.cdecl, discardable, importc: "wrefresh", dynlib: libncurses.} #proc wrefresh*(win: ptr window): int {.cdecl, discardable, importc: "wrefresh", dynlib: libncurses.}
proc wclear*(win: PWindow): int {.cdecl, discardable, importc: "wclear", dynlib: libncurses.} proc wclear*(win: ptr window): int {.cdecl, discardable, importc: "wclear", dynlib: libncurses.}
proc mvwhline*(win: PWindow, rol, col: int, chType: char, n: int): int {.cdecl, discardable, importc: "whline", dynlib: libncurses.} proc mvwhline*(win: ptr window, rol, col: int, chType: char, n: int): int {.cdecl, discardable, importc: "whline", dynlib: libncurses.}
proc wmove*(win: PWindow, rol, col: int): int {.cdecl, discardable, importc: "wmove", dynlib: libncurses.} proc wmove*(win: ptr window, rol, col: int): int {.cdecl, discardable, importc: "wmove", dynlib: libncurses.}
#proc wprintw*(win: PWindow, str: cstring): int {.cdecl, discardable, importc: "wprintw", dynlib: libncurses.} #proc wprintw*(win: ptr window, str: cstring): int {.cdecl, discardable, importc: "wprintw", dynlib: libncurses.}
#proc mvwprintw*(win: PWindow, row, col: int, str: cstring): int {.cdecl, discardable, importc: "mvwprintw", dynlib: libncurses.} #proc mvwprintw*(win: ptr window, row, col: int, str: cstring): int {.cdecl, discardable, importc: "mvwprintw", dynlib: libncurses.}
proc box*(win: PWindow, vert_border, horiz_border: char): int {.cdecl, discardable, importc: "box", dynlib: libncurses.} proc box*(win: ptr window, vert_border, horiz_border: char): int {.cdecl, discardable, importc: "box", dynlib: libncurses.}
proc wborder*(win: PWindow, ls,rs,ts,bs,tl,tr,bl,br: char): int {.cdecl, discardable, importc: "wborder", dynlib: libncurses.} proc wborder*(win: ptr window, ls,rs,ts,bs,tl,tr,bl,br: char): int {.cdecl, discardable, importc: "wborder", dynlib: libncurses.}
proc init_pair*(n, f, b: int): int {.cdecl, discardable, importc: "init_pair", dynlib: libncurses.} proc init_pair*(n, f, b: int): int {.cdecl, discardable, importc: "init_pair", dynlib: libncurses.}
proc COLOR_PAIR*(n: int): int {.cdecl, discardable, importc: "COLOR_PAIR", dynlib: libncurses.} proc COLOR_PAIR*(n: int): int {.cdecl, discardable, importc: "COLOR_PAIR", dynlib: libncurses.}
proc wattron*(win: PWindow, attrs: int): int {.cdecl, discardable, importc: "wattron", dynlib: libncurses.} proc wattron*(win: ptr window, attrs: int): int {.cdecl, discardable, importc: "wattron", dynlib: libncurses.}
proc wattroff*(win: PWindow, attrs: int): int {.cdecl, discardable, importc: "wattron", dynlib: libncurses.} proc wattroff*(win: ptr window, attrs: int): int {.cdecl, discardable, importc: "wattron", dynlib: libncurses.}
const BLACK* = 0 const BLACK* = 0
const RED* = 1 const RED* = 1