summary refs log tree commit diff stats
path: root/tests/misc/tparseopt.nim
blob: cbed5d4768fac79dad8297b77d0d40bbee3d06e1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
discard """
  output: '''
parseopt
first round
kind: cmdLongOption	key:val  --  left:
second round
kind: cmdLongOption	key:val  --  left:
kind: cmdLongOption	key:val  --  debug:3
kind: cmdShortOption	key:val  --  l:4
kind: cmdShortOption	key:val  --  r:2
cmdLongOption foo
cmdLongOption path
parseoptNoVal
kind: cmdLongOption	key:val  --  left:
kind: cmdLongOption	key:val  --  debug:3
kind: cmdShortOption	key:val  --  l:
kind: cmdShortOption	key:val  --  r:2
kind: cmdLongOption	key:val  --  debug:2
kind: cmdLongOption	key:val  --  debug:1
kind: cmdShortOption	key:val  --  r:1
kind: cmdShortOption	key:val  --  r:0
kind: cmdShortOption	key:val  --  l:
kind: cmdShortOption	key:val  --  r:4
parseopt2
first round
kind: cmdLongOption	key:val  --  left:
second round
kind: cmdLongOption	key:val  --  left:
kind: cmdLongOption	key:val  --  debug:3
kind: cmdShortOption	key:val  --  l:4
kind: cmdShortOption	key:val  --  r:2'''
"""
from parseopt import nil
from parseopt2 import nil


block:
  echo "parseopt"
  for kind, key, val in parseopt.getopt():
    echo "kind: ", kind, "\tkey:val  --  ", key, ":", val

  # pass custom cmdline arguments
  echo "first round"
  var argv = "--left --debug:3 -l=4 -r:2"
  var p = parseopt.initOptParser(argv)
  for kind, key, val in parseopt.getopt(p):
    echo "kind: ", kind, "\tkey:val  --  ", key, ":", val
    break
  # reset getopt iterator and check arguments are returned correctly.
  echo "second round"
  for kind, key, val in parseopt.getopt(p):
    echo "kind: ", kind, "\tkey:val  --  ", key, ":", val

  # bug #9619
  var x = parseopt.initOptParser(@["--foo:", "--path"], allowWhitespaceAfterColon = false)
  for kind, key, val in parseopt.getopt(x):
    echo kind, " ", key

block:
  echo "parseoptNoVal"
  # test NoVal mode with custom cmdline arguments
  var argv = "--left --debug:3 -l -r:2 --debug 2 --debug=1 -r1 -r=0 -lr4"
  var p = parseopt.initOptParser(argv,
                                  shortNoVal = {'l'}, longNoVal = @["left"])
  for kind, key, val in parseopt.getopt(p):
    echo "kind: ", kind, "\tkey:val  --  ", key, ":", val

block:
  echo "parseopt2"
  for kind, key, val in parseopt2.getopt():
    echo "kind: ", kind, "\tkey:val  --  ", key, ":", val

  # pass custom cmdline arguments
  echo "first round"
  var argv: seq[string] = @["--left", "--debug:3", "-l=4", "-r:2"]
  var p = parseopt2.initOptParser(argv)
  for kind, key, val in parseopt2.getopt(p):
    echo "kind: ", kind, "\tkey:val  --  ", key, ":", val
    break
  # reset getopt iterator and check arguments are returned correctly.
  echo "second round"
  for kind, key, val in parseopt2.getopt(p):
    echo "kind: ", kind, "\tkey:val  --  ", key, ":", val