mirror of
https://github.com/iffy/nim-argparse
synced 2026-01-14 01:01:36 +00:00
No description
| .github/workflows | ||
| changes | ||
| docs | ||
| src | ||
| tests | ||
| .gitignore | ||
| argparse.nimble | ||
| builddocs.sh | ||
| CHANGELOG.md | ||
| LICENSE.md | ||
| README.md | ||
argparse
Command line argument parsing library. It generates the parser at compile time so that parsed options have a well-defined type.
Example
After defining your expected arguments with newParser(...), use:
run(...)to parse and execute anyrun:blocks you've defined. This will automatically display help text when-h/--helpis used.parse(...)to parse without executing, giving you more control over what happens.
Both procs will parse the process' command line if no arguments are given.
run()
import argparse
var p = newParser:
flag("-a", "--apple")
flag("-b", help="Show a banana")
option("-o", "--output", help="Output to this file")
command("somecommand"):
arg("name")
arg("others", nargs = -1)
run:
echo opts.name
echo opts.others
echo opts.parentOpts.apple
echo opts.parentOpts.b
echo opts.parentOpts.output
echo opts.parentOpts.output_opt.get()
try:
p.run(@["--apple", "-o=foo", "somecommand", "myname", "thing1", "thing2"])
except UsageError as e:
stderr.writeLine getCurrentExceptionMsg()
quit(1)
parse()
import argparse
var p = newParser:
flag("-a", "--apple")
flag("-b", help="Show a banana")
option("-o", "--output", help="Output to this file")
arg("name")
arg("others", nargs = -1)
try:
var opts = p.parse(@["--apple", "-o=foo", "hi"])
assert opts.apple == true
assert opts.b == false
assert opts.output == "foo"
assert opts.name == "hi"
assert opts.others == @[]
except ShortCircuit as err:
if err.flag == "argparse_help":
echo err.help
quit(1)
except UsageError:
stderr.writeLine getCurrentExceptionMsg()
quit(1)
Alternatives
If argparse doesn't suit your needs, consider these alternatives: