parseopt fix (#11363) [backport]

This commit is contained in:
Jasper Jenkins 2019-06-01 01:44:08 -07:00 • committed by Andreas Rumpf
commit 6b23b2d7df
2 changed files with 4 additions and 2 deletions

View file

@ -348,6 +348,7 @@ proc next*(p: var OptParser) {.rtl, extern: "npo$1".} =
if i >= p.cmds[p.idx].len and p.idx < p.cmds.len and p.allowWhitespaceAfterColon: if i >= p.cmds[p.idx].len and p.idx < p.cmds.len and p.allowWhitespaceAfterColon:
inc p.idx inc p.idx
i = 0 i = 0
if p.idx < p.cmds.len:
p.val = TaintedString p.cmds[p.idx].substr(i) p.val = TaintedString p.cmds[p.idx].substr(i)
elif len(p.longNoVal) > 0 and p.key.string notin p.longNoVal and p.idx+1 < p.cmds.len: elif len(p.longNoVal) > 0 and p.key.string notin p.longNoVal and p.idx+1 < p.cmds.len:
p.val = TaintedString p.cmds[p.idx+1] p.val = TaintedString p.cmds[p.idx+1]

View file

@ -21,6 +21,7 @@ kind: cmdShortOption key:val -- r:1
kind: cmdShortOption key:val -- r:0 kind: cmdShortOption key:val -- r:0
kind: cmdShortOption key:val -- l: kind: cmdShortOption key:val -- l:
kind: cmdShortOption key:val -- r:4 kind: cmdShortOption key:val -- r:4
kind: cmdLongOption key:val -- debug:
''' '''
joinable: false joinable: false
""" """
@ -62,7 +63,7 @@ else:
block: block:
echo "parseoptNoVal" echo "parseoptNoVal"
# test NoVal mode with custom cmdline arguments # test NoVal mode with custom cmdline arguments
var argv = "--left --debug:3 -l -r:2 --debug 2 --debug=1 -r1 -r=0 -lr4" var argv = "--left --debug:3 -l -r:2 --debug 2 --debug=1 -r1 -r=0 -lr4 --debug:"
var p = parseopt.initOptParser(argv, var p = parseopt.initOptParser(argv,
shortNoVal = {'l'}, longNoVal = @["left"]) shortNoVal = {'l'}, longNoVal = @["left"])
for kind, key, val in parseopt.getopt(p): for kind, key, val in parseopt.getopt(p):