argparse
WIP strongly-typed argument parser with sub command support
Summary
| Latest Version | Unknown |
|---|---|
| License | MIT |
| CI Status | Passing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:24 |
Tags
Installation
nimble install argparse
choosenim install argparse
git clone https://github.com/iffy/nim-argparse
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| argparse | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Source
| Repository | https://github.com/iffy/nim-argparse |
|---|---|
| Homepage | https://github.com/iffy/nim-argparse |
| Documentation | View Documentation |
| Registry Source | nimble_official |
README
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: