[][src]Crate argwerk

Documentation Crates Actions Status

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.

For a more complete commandline parsing library, use clap.

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, String)>,
        rest: Vec<String>,
    }
    /// Print this help.
    "-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>.
    (foo, bar, #[rest] args) if positional.is_none() => {
        positional = Some((foo.into(), bar.into()));
        rest = args;
        Ok(())
    }
}?;

dbg!(args);
Ok(())

Macros

parse

Parse commandline arguments.

Structs

Error

An error raised by argwerk.

Enums

ErrorKind

The kind of an error.

Functions

doc

Helper utility for building documentation.