6 Commits
0.6.0 ... 0.6.4

2 changed files with 21 additions and 7 deletions

View File

@ -1,4 +1,4 @@
import docopt, json, osproc, posix, nre, streams, strtabs, terminal, unicode import docopt, json, osproc, posix, nre, streams, strtabs, tables, terminal, unicode
import os except sleep import os except sleep
import strutils except toUpper, toLower import strutils except toUpper, toLower
@ -10,12 +10,12 @@ type
TermColor = ForegroundColor or BackgroundColor TermColor = ForegroundColor or BackgroundColor
proc getVal*(cfg: CombinedConfig, key, default: string): string = proc getVal*(cfg: CombinedConfig, key: string): string =
let argKey = "--" & key let argKey = "--" & key
let envKey = key.replace('-', '_').toUpper let envKey = key.replace('-', '_').toUpper
let jsonKey = key.replace(re"(-\w)", proc (m: RegexMatch): string = ($m)[1..1].toUpper) let jsonKey = key.replace(re"(-\w)", proc (m: RegexMatch): string = ($m)[1..1].toUpper)
if cfg.docopt[argKey]: return $cfg.docopt[argKey] if cfg.docopt.contains(argKey) and cfg.docopt[argKey]: return $cfg.docopt[argKey]
elif existsEnv(envKey): return getEnv(envKey) elif existsEnv(envKey): return getEnv(envKey)
elif cfg.json.hasKey(jsonKey): elif cfg.json.hasKey(jsonKey):
let node = cfg.json[jsonKey] let node = cfg.json[jsonKey]
@ -27,8 +27,11 @@ proc getVal*(cfg: CombinedConfig, key, default: string): string =
of JNull: return "" of JNull: return ""
of JObject: return $node of JObject: return $node
of JArray: return $node of JArray: return $node
else: return default else: raise newException(ValueError, "cannot find a configuration value for \"" & key & "\"")
proc getVal*(cfg: CombinedConfig, key, default: string): string =
try: return getVal(cfg, key)
except: return default
proc loadEnv*(): StringTableRef = proc loadEnv*(): StringTableRef =
result = newStringTable() result = newStringTable()
@ -188,6 +191,17 @@ 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 stripAnsi*(str: string): string = return str.replace(STRIP_ANSI_REGEX, "")
proc queryParamsToCliArgs*(queryParams: Table[string, string]): 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.add("--" & k)
if v != "true": result.add(v) # support things like ?verbose=true -> cmd --verbose
proc queryParamsToCliArgs*(queryParams: StringTableRef): seq[string] = proc queryParamsToCliArgs*(queryParams: StringTableRef): seq[string] =
result = @[] result = @[]
@ -196,5 +210,5 @@ proc queryParamsToCliArgs*(queryParams: StringTableRef): seq[string] =
if k.startsWith("arg"): result.add(v) if k.startsWith("arg"): result.add(v)
else : else :
result[1].add("--" & k) result.add("--" & k)
if v != "true": result[1].add(v) # support things like ?verbose=true -> cmd --verbose if v != "true": result.add(v) # support things like ?verbose=true -> cmd --verbose

View File

@ -1,6 +1,6 @@
# Package # Package
version = "0.6.0" version = "0.6.4"
author = "Jonathan Bernard" author = "Jonathan Bernard"
description = "Helper functions for writing command line interfaces." description = "Helper functions for writing command line interfaces."
license = "MIT" license = "MIT"