Handle gracefully NimScript invocations with additional Nim settings such as --verbosity:x

This commit is contained in:
Zahary Karadjov 2019-10-29 13:56:53 +02:00
parent 533a621d4a
commit d9e815fe67
No known key found for this signature in database
GPG Key ID: C8936F8A3073D609
2 changed files with 11 additions and 4 deletions

View File

@ -59,8 +59,15 @@ proc getFieldName(caseField: NimNode): NimNode =
if result.kind == nnkPostfix: result = result[1]
when defined(nimscript):
func scriptNameParamIdx: int =
for i in 1 ..< paramCount():
var param = paramStr(i)
if param.len > 0 and param[0] != '-':
return i
proc appInvocation: string =
"nim " & (if paramCount() > 1: paramStr(1) else: "<nims-script>")
let scriptNameIdx = scriptNameParamIdx()
"nim " & (if paramCount() > scriptNameIdx: paramStr(scriptNameIdx) else: "<nims-script>")
type stderr = object
@ -68,7 +75,7 @@ when defined(nimscript):
echo msg
proc commandLineParams(): seq[string] =
for i in 2 .. paramCount():
for i in scriptNameParamIdx() + 1 .. paramCount():
result.add paramStr(i)
# TODO: Why isn't this available in NimScript?

View File

@ -89,8 +89,8 @@ proc next*(p: var OptParser) =
var i = p.pos
while i < p.cmds[p.idx].len and p.cmds[p.idx][i] in {'\t', ' '}: inc(i)
p.pos = i
setLen(p.key.string, 0)
setLen(p.val.string, 0)
setLen(p.key, 0)
setLen(p.val, 0)
if p.inShortState:
p.inShortState = false
if i >= p.cmds[p.idx].len: