[−][src]Crate argwerk
Helper utility for parsing simple commandline arguments.
This is not intended to be a complete commandline parser library. Instead this can be used as an alternative quick-and-dirty approach that can be cheaply incorporated into a tool.
We provide:
- A dependency-free commandline parsing framework using declarative macros. So it's hopefully lightweight and compiles quickly.
- A flexible mechanism for parsing.
- Formatting decent looking help messages.
We specifically do not support:
- As-close-to correct line wrapping with wide unicode characters as possible (see textwrap).
- Required arguments. If your argument is required, you'll have to
ok_or_else it yourself from an
Option<T>
. - Complex command structures like subcommands.
For a more complete commandline parsing library, use clap.
See the documentation for argwerk::parse! for how to use.
Examples
This is available as a runnable example:
cargo run --example tour
let args = argwerk::parse! { /// A simple test command. /// /// This is nice! "testcommand [-h]" { help: bool, file: Option<String>, limit: usize = 42, positional: Option<(String, Option<String>)>, rest: Vec<String>, } /// Prints the help. /// /// This includes: /// * All the available switches. /// * All the available positional arguments. /// * Whatever else the developer decided to put in here! We even support wrapping comments which are overly long. "-h" | "--help" => { help = true; print_help(); Ok(()) } /// Limit the number of things by <n>. "--limit" | "-l", n => { limit = str::parse(&n)?; Ok(()) } /// Write to the file specified by <path>. "--file", path if !file.is_some() => { file = Some(path); Ok(()) } /// Takes argument at <foo> and <bar>. /// /// * This is an indented message. The first alphanumeric character determines the indentation to use. (foo, #[option] bar, #[rest] args) if positional.is_none() => { positional = Some((foo, bar)); rest = args; Ok(()) } }?; dbg!(args);
Macros
parse | Parse commandline arguments. |
Structs
Error | An error raised by argwerk. |
Help | Helper for construct help text. |
Enums
ErrorKind | The kind of an error. |
Functions
doc | Helper utility for building documentation. |