argwerk
Define a simple command-line parser through a declarative macro.
This is not intended to be a complete command-line parser library. Instead this can be used as an alternative quick-and-dirty approach that can be cheaply incorporated into a tool.
For a more complete command-line parsing library, use clap.
We provide:
- A dependency-free command-line parsing framework using declarative macros.
- A flexible mechanism for parsing.
- Formatting of decent looking help messages.
We do not provide:
- As-close-to correct line wrapping with wide unicode characters as possible (see textwrap).
- Complex command structures like subcommands.
- Parsing into OsStrings. The default parser will panic in case not valid unicode is passed into it in accordance with [std::env::args].
For how to use, see the documentation of argwerk::define and argwerk::args.
Examples
Initially when you're adding arguments to your program you can use argwerk::args. This allows for easily parsing out a handful of optional parameters.
This example is available as
simple:
let args = args! ?;
if args.help
dbg!;
After a while you might want to graduate to defining a named struct containing the arguments. This can be useful if you want to pass the arguments around.
This example is available as
tour:
define!
// Note: we're using `parse` here instead of `args` since it works better
// with the example.
let args = parse?;
dbg!;
License: MIT/Apache-2.0