Commit 6a61499847b91eec8c08fa0e558da99dbd5e1cf2
1 parent
4aa613cb
Fix for long opts, various cosmetics.
Showing
2 changed files
with
11 additions
and
13 deletions
lapp.nim
@@ -130,7 +130,7 @@ proc fail(msg: string) = | @@ -130,7 +130,7 @@ proc fail(msg: string) = | ||
130 | stderr.writeln(progname & ": " & msg) | 130 | stderr.writeln(progname & ": " & msg) |
131 | quit(usage) | 131 | quit(usage) |
132 | 132 | ||
133 | -proc parseSpec (u: string) = | 133 | +proc parseSpec(u: string) = |
134 | var | 134 | var |
135 | L: PLexer | 135 | L: PLexer |
136 | tok: string | 136 | tok: string |
@@ -152,7 +152,7 @@ proc parseSpec (u: string) = | @@ -152,7 +152,7 @@ proc parseSpec (u: string) = | ||
152 | if tok == "-" or tok == "--": # flag | 152 | if tok == "-" or tok == "--": # flag |
153 | if tok == "-": #short flag | 153 | if tok == "-": #short flag |
154 | let flag = L.get | 154 | let flag = L.get |
155 | - if len(flag) != 1: fail("short flag has one character!") | 155 | + if len(flag) != 1: fail("short option has one character!") |
156 | tok = L.get | 156 | tok = L.get |
157 | if tok == ",": # which is alias for long flag | 157 | if tok == ",": # which is alias for long flag |
158 | tok = L.get | 158 | tok = L.get |
@@ -219,7 +219,7 @@ proc closeFiles() {.noconv.} = | @@ -219,7 +219,7 @@ proc closeFiles() {.noconv.} = | ||
219 | if nfiles == 0: return | 219 | if nfiles == 0: return |
220 | for i in 1..nfiles: files[i].close() | 220 | for i in 1..nfiles: files[i].close() |
221 | 221 | ||
222 | -proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | 222 | +proc parseArguments(usage: string, args: seq[string]): Table[string,PValue] = |
223 | var | 223 | var |
224 | vars = initTable[string,PValue]() | 224 | vars = initTable[string,PValue]() |
225 | n = len(args) - 1 | 225 | n = len(args) - 1 |
@@ -231,7 +231,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | @@ -231,7 +231,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | ||
231 | flagvalues: seq[seq[string]] | 231 | flagvalues: seq[seq[string]] |
232 | 232 | ||
233 | proc next(): string = | 233 | proc next(): string = |
234 | - if i > n: fail("a flag required a value!") | 234 | + if i > n: fail("an option required a value!") |
235 | result = args[i] | 235 | result = args[i] |
236 | i += 1 | 236 | i += 1 |
237 | 237 | ||
@@ -242,12 +242,12 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | @@ -242,12 +242,12 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | ||
242 | if n < 20: | 242 | if n < 20: |
243 | fail("no such argument: " & $n) | 243 | fail("no such argument: " & $n) |
244 | else: | 244 | else: |
245 | - fail("no such flag " & c) | 245 | + fail("no such option: " & c) |
246 | 246 | ||
247 | proc get_spec(name: string): PSpec = | 247 | proc get_spec(name: string): PSpec = |
248 | result = parm_spec[name] | 248 | result = parm_spec[name] |
249 | if result == nil: | 249 | if result == nil: |
250 | - fail("no such flag " & name) | 250 | + fail("no such option: " & name) |
251 | 251 | ||
252 | newSeq(flagvalues, 0) | 252 | newSeq(flagvalues, 0) |
253 | parseSpec(usage) | 253 | parseSpec(usage) |
@@ -262,7 +262,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | @@ -262,7 +262,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | ||
262 | if short: # all short args are aliases, even if only to themselves | 262 | if short: # all short args are aliases, even if only to themselves |
263 | flag = get_alias(arg[0]) | 263 | flag = get_alias(arg[0]) |
264 | else: | 264 | else: |
265 | - flag = arg | 265 | + flag = arg[1..high(arg)] |
266 | info = get_spec(flag) | 266 | info = get_spec(flag) |
267 | if info.needsValue: | 267 | if info.needsValue: |
268 | if short and len(arg) > 1: # value can follow short flag | 268 | if short and len(arg) > 1: # value can follow short flag |
@@ -291,7 +291,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | @@ -291,7 +291,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | ||
291 | for flag,info in parm_spec: | 291 | for flag,info in parm_spec: |
292 | if not info.used: | 292 | if not info.used: |
293 | if info.defVal == "": # no default! | 293 | if info.defVal == "": # no default! |
294 | - fail("required flag missing: " & flag) | 294 | + fail("required option or argument missing: " & flag) |
295 | flagvalues.add(@[flag,info.defVal]) | 295 | flagvalues.add(@[flag,info.defVal]) |
296 | 296 | ||
297 | # cool, we have the info, can convert known flags | 297 | # cool, we have the info, can convert known flags |
@@ -348,7 +348,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | @@ -348,7 +348,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = | ||
348 | 348 | ||
349 | return vars | 349 | return vars |
350 | 350 | ||
351 | -proc parse* (usage: string): Table[string,PValue] = | 351 | +proc parse*(usage: string): Table[string,PValue] = |
352 | var | 352 | var |
353 | args: seq[string] | 353 | args: seq[string] |
354 | n = paramCount() | 354 | n = paramCount() |
@@ -363,7 +363,7 @@ when isMainModule: | @@ -363,7 +363,7 @@ when isMainModule: | ||
363 | -n: (default 10) number of lines | 363 | -n: (default 10) number of lines |
364 | -v,--verbose: (bool...) verbosity level | 364 | -v,--verbose: (bool...) verbosity level |
365 | -a,--alpha useless parm | 365 | -a,--alpha useless parm |
366 | - <files>: (default stdin...) | 366 | + <file>: (default stdin...) |
367 | |<out>: (default stdout) | 367 | |<out>: (default stdout) |
368 | """ | 368 | """ |
369 | 369 |
lapp.nimble
1 | [Package] | 1 | [Package] |
2 | -name = "Lapp for Nim" | 2 | +name = "lapp" |
3 | version = "0.1" | 3 | version = "0.1" |
4 | author = "Steven Donovan, Göran Krampe" | 4 | author = "Steven Donovan, Göran Krampe" |
5 | description = "Opt parser using synopsis as specification, ported from Lua." | 5 | description = "Opt parser using synopsis as specification, ported from Lua." |
6 | license = "MIT" | 6 | license = "MIT" |
7 | 7 | ||
8 | -bin = "lapp" | ||
9 | - | ||
10 | [Deps] | 8 | [Deps] |
11 | Requires: "nimrod >= 0.10" | 9 | Requires: "nimrod >= 0.10" |