diff --git a/cliutils.nim b/cliutils.nim index 55d385e..1f9cfa0 100644 --- a/cliutils.nim +++ b/cliutils.nim @@ -41,20 +41,20 @@ type HandleProcMsgCB* = proc (outMsg: TaintedString, errMsg: TaintedString, cmd: string): void proc sendMsg*(h: HandleProcMsgCB, outMsg: TaintedString, - errMsg: TaintedString = nil, cmd: string = ""): void = + errMsg: TaintedString = "", cmd: string = ""): void = if h != nil: h(outMsg, errMsg, cmd) proc makeProcMsgHandler*(outSink, errSink: File, prefixCmd: bool = true): HandleProcMsgCB = result = proc(outMsg, errMsg: TaintedString, cmd: string): void {.closure.} = - let prefix = if cmd == nil or not prefixCmd: "" else: cmd & ": " - if outMsg != nil: outSink.writeLine(prefix & outMsg) - if errMsg != nil: errSink.writeLine(prefix & errMsg) + let prefix = if cmd.len == 0 or not prefixCmd: "" else: cmd & ": " + if outMsg.len > 0: outSink.writeLine(prefix & outMsg) + if errMsg.len > 0: errSink.writeLine(prefix & errMsg) proc makeProcMsgHandler*(outSink, errSink: Stream, prefixCmd: bool = true): HandleProcMsgCB = result = proc(outMsg, errMsg: TaintedString, cmd: string): void {.closure.} = - let prefix = if cmd == nil or not prefixCmd: "" else: cmd & ": " - if outMsg != nil: outSink.writeLine(prefix & outMsg) - if errMsg != nil: errSink.writeLine(prefix & errMsg) + let prefix = if cmd.len == 0 or not prefixCmd: "" else: cmd & ": " + if outMsg.len > 0: outSink.writeLine(prefix & outMsg) + if errMsg.len > 0: errSink.writeLine(prefix & errMsg) proc combineProcMsgHandlers*(a, b: HandleProcMsgCB): HandleProcMsgCB = if a == nil: result = b @@ -72,9 +72,9 @@ proc waitFor*(p: Process, msgCB: HandleProcMsgCB, procCmd: string = ""): int = var line = newStringOfCap(120).TaintedString while true: if pout.readLine(line): - msgCB.sendMsg(line, nil, procCmd) + msgCB.sendMsg(line, "", procCmd) elif perr.readLine(line): - msgCB.sendMsg(nil, line, procCmd) + msgCB.sendMsg("", line, procCmd) else: result = peekExitCode(p) if result != -1: break @@ -100,8 +100,8 @@ proc execWithOutput*(command: string, workingDir:string = "", outSeq = @[]; errSeq = @[] var outputCollector = combineProcMsgHandlers(msgCB, proc(outMsg, errMsg: TaintedString, cmd: string): void {.closure.} = - if outMsg != nil: outSeq.add(outMsg) - if errMsg != nil: errSeq.add(errMsg)) + if outMsg.len > 0: outSeq.add(outMsg) + if errMsg.len > 0: errSeq.add(errMsg)) result[2] = exec(command, workingDir, args, env, options, outputCollector) result[0] = outSeq.join("\n") @@ -147,15 +147,15 @@ proc daemonize*(pidfile, si, so, se: string, daemonMain: proc(): void): Pid = flushFile(stdout) flushFile(stderr) - if not si.isNil and si != "": + if si.len > 0: fi = open(si, fmRead) discard dup2(getFileHandle(fi), getFileHandle(stdin)) - if not so.isNil and so != "": + if so.len > 0: fo = open(so, fmAppend) discard dup2(getFileHandle(fo), getFileHandle(stdout)) - if not se.isNil and so != "": + if se.len > 0: fe = open(se, fmAppend) discard dup2(getFileHandle(fe), getFileHandle(stderr)) diff --git a/cliutils.nimble b/cliutils.nimble index 2bc240f..3eec9f1 100644 --- a/cliutils.nimble +++ b/cliutils.nimble @@ -1,11 +1,11 @@ # Package -version = "0.5.0" +version = "0.6.0" author = "Jonathan Bernard" description = "Helper functions for writing command line interfaces." license = "MIT" # Dependencies -requires @["nim >= 0.18.0", "docopt"] +requires @["nim >= 0.19.0", "docopt >= 0.6.8"]