From e0eb8fd4c2026b80ef584e3557a75fa1b48e3b4a Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Tue, 2 Oct 2018 12:09:18 -0500 Subject: [PATCH] Add functions for a simple CLI<->HTTP layer. --- cliutils.nim | 17 ++++++++++++++++- cliutils.nimble | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/cliutils.nim b/cliutils.nim index 5e331e6..55d385e 100644 --- a/cliutils.nim +++ b/cliutils.nim @@ -93,7 +93,7 @@ proc execWithOutput*(command: string, workingDir:string = "", args: openArray[string] = [], env: StringTableRef = nil, options: set[ProcessOption] = {poUsePath}, msgCB: HandleProcMsgCB = nil): - tuple[output: TaintedString, error: TaintedString, exitCode: int] = + tuple[output, error: TaintedString, exitCode: int] = result = (TaintedString"", TaintedString"", -1) var outSeq, errSeq: seq[TaintedString] @@ -183,3 +183,18 @@ proc termColor*(color: TermColor, bright, bold = false): string = proc withColor*(str: string, color: TermColor, bright, bold = false): string = return termColor(color, bright, bold) & str + +let STRIP_ANSI_REGEX = re"\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]" + +proc stripAnsi*(str: string): string = return str.replace(STRIP_ANSI_REGEX, "") + +proc queryParamsToCliArgs*(queryParams: StringTableRef): seq[string] = + result = @[] + + for k,v in queryParams: + # support ?arg1=val1&arg2=val2 -> cmd val1 val2 + if k.startsWith("arg"): result.add(v) + + else : + result[1].add("--" & k) + if v != "true": result[1].add(v) # support things like ?verbose=true -> cmd --verbose diff --git a/cliutils.nimble b/cliutils.nimble index 5a9c9dd..2bc240f 100644 --- a/cliutils.nimble +++ b/cliutils.nimble @@ -1,6 +1,6 @@ # Package -version = "0.4.1" +version = "0.5.0" author = "Jonathan Bernard" description = "Helper functions for writing command line interfaces." license = "MIT"